C语言 指针二维数组怎么初始化

作者&投稿:拔罡 (若有异议请与网页底部的电邮联系)
c语言有关二维数组变量初始化~

例如对整型二维数组a[3][2]赋值
方法一:
在定义的同时赋值
int a[3][2]={0};//所有数组元素均为0

方法二:
int a[3][2]={1,2,3,4,5,6};//常规的赋值方法

方法三:
int a[3][2]={{1,2},{3,4},{5,6}};//分行的赋值方法

方法四:
int a[3][2]={{1,2},{0},{3}};//部分赋值方法,第一行元素的值分别为1,2,第二行元素值都是0,
第三行第一个元素值为3,第二个元素值为0

方法五:
int a[3][2];/先定义
for(i=0;i<=3;i++) //用双重for循环赋值,i,j表示二维数组下标
for(j=0;j<=2;j++)
scanf("%d",&a[i][j]);

希望对你有所帮助。

还是我来告诉你吧!前者是二级地址,就是地址的地址。后者是一级地址,虽然指向的也是一个地址,但是定义的时候申明的是一级地址。

1、数组指针初始化方法:
int (*p)[4];
char a[3][4];
p=a;
p=&a[0];
p=a+1;
p=&a[1]; //都正确
p=a[0]; //错误
p=a[1]; //错误。
2、首先,指针p表示的是,指向一个含有4个元素的一维数组的指针,因此,必须把一个含有4个元数的数组的地址赋给指针p才会正确。因为二维数组名a,其实就是&a[0],表示二维数组第一行的行指针,这一行包含有4个元素,因此他就是一个含有4个元素的一维数组的指针,是正确的赋值。同理a+1是与&a[1]等价的,也就是表示的是二维数组第行的的行指针,同理a[0]是错误的,因为a[0]是指的第一行第一个元素的地址,也就是&a[0][0],他只含有一个元素,不是一个数组的地址,所以错误

Total_FileType[0][typea] = malloc(xxx);
strcpy(Total_FileType[0][typea],newname);
//也可以不申请控制,直接让数组元素指向数据,同样适用*提取数据
*(Total_FileType[0][typea])读不到数据么?

char * Total_FileType[MAXTYPE][MAXTOTAL] = { 0 };

是这个问题,把那个*去掉就好了,不应该定为指针。
然后这么写
strcpy(Total_FileType[0],newname)typea++

可以直接让指针有所指,比如指向字符串


含山县17042398003: c语言的二级指针如何初始化了? -
蒲唯精蛋: 二维指针初始化分配空间分成两步操作:先分配二维指针的行数再分配每行的数据空间 如:int **p; int n=10; int m=100; p=(int **)malloc( n*sizeof(int *) ); //分配n行 for( i=0;i{ p[i]=(int *)malloc( m*sizeof(int) ); //为每行分配m个数据空间 }

含山县17042398003: c语言中如何通过二级指针来操作二维数组 -
蒲唯精蛋: 1、首先我们打开电脑里的C语言软件,新建一个工程和.c文件,输入头文件和主函数. 2、然后我们输入图示代码初始化数组,定义变量类型. 3、然后我们输入图示代码用for语句实现数组的访问. 4、然后我们输入图示代码进行输出. 5、然后我们输入图示代码编译、运行,即可通过二级指针来操作二维数组.

含山县17042398003: c语言中二维数组的初始化问题 -
蒲唯精蛋: 是对的.char *[]相当于一个二维数组.后面的赋值表示将每个字符串赋值为空

含山县17042398003: C语言 指针初始化二维数组 -
蒲唯精蛋: 将 p

含山县17042398003: c语言中,关于指针int(*p)[4]和int*p指向二维数组a[3][4]初始化的问题. -
蒲唯精蛋: 二维数组相当于多行列数相同的一位数组组合起来;int (*p)[N]定义一个行指针p,其中:p指向一个N列二维数组的首地址 p自增1,p指向下一“行”一维数组的首地址 因为p是一个二级指针.所以索引其指向的数据内容需要取二次内容,格式及解...

含山县17042398003: c语言二维数组初始化 -
蒲唯精蛋: 声明时给初始值叫初始化.例如:int b[3][4]={1,2,3,4,5,6,7,8,4,4,4,4}; 声明后赋值,可以用赋值语句, b[0][0]=1; b[0][1]=2; b[0][2]=3; b[0][3]=4; b[1][0]=5; b[1][1]=6; b[1][2]=7; b[1][3]=8; b[2][0]=4; b[2][1]=4; b[2][2]=4; b[2][3]=4; 数据量大时,则用数...

含山县17042398003: C语言 二维数组初始化 -
蒲唯精蛋: 我试了一下 编译也是错误的 加0是对的 ;我想应该是 二维数组的初始化的时候 你既然定义了两行两列的矩阵 如果a[2][2]={{2},{0}}系统是默认后面以0来代替数据 如:2 00 0 但是如果是a[2][2]={{2},{}}系统不会默认用0代替其他数据 会报错

含山县17042398003: C语言 如何动态创建二维数组 -
蒲唯精蛋: 这样的方法可行,不过要是题目要求输入m和n,然后再定义二维数组a[m][n],那就行不通了. 你可以这样做:(以int型为例) int **a; int m,n,i;scanf("%d%d",&m,&n);a=(int**)malloc(m*sizeof(int*)); /*malloc函数在stdlib.h里面,用的时候加入这个头文件*/ for(i=0;i<m;i++) a[i]=(int*)malloc(n*sizeof(int));/*这样以后你就可以把a当作二维数组a[m][n]来用了..

含山县17042398003: C语言指针和二维数组 -
蒲唯精蛋: 首先,你下面for循环有误,不是for(j=0;i<2;j++)而是for(j=0;j<2;j++) 然后 过程的详细解释如下:#include<stdio.h> main() { int a[3][2],(*p)[2],i,j;//二维数组名是数组第一行元素的地址,也就是a为a[0]的地址 p=a; a[0][0]=1; p[0][1]=2;//这...

含山县17042398003: c语言变长二维数组怎么初始化,我用这个gcc编译不通过, int n; scanf("%d, &... -
蒲唯精蛋: 我也遇到了这样的问题,你用for语句初始化的结果是正确的么?for (row = 0; row < n; row++) for (col = 0; col < n; col++) squcer[row][col] = 0; 不知你也是用这样的方法初始化的么?我是这样初始化的,查看squcer[row][col]值好像是内存地址.之后...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网