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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 指针二维数组怎么初始化相关的知识,希望对你有一定的参考价值。

要对文件名进行检索分类 进行存储
.txt
.bmp
........等
于是声明了一个
char * Total_FileType[MAXTYPE][MAXTOTAL] = 0 ;
对其存储如下:
switch type

case 1:strcpy(Total_FileType[0][typea],newname)typea++
case 2:strcpy(Total_FileType[1][typea],newname)typea++
case 3:strcpy(Total_FileType[2][typea],newname)typea++

然后就有问题了 是那个初始化的问题么????还是社么问题???读不出
求解答 谢谢

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],他只含有一个元素,不是一个数组的地址,所以错误
参考技术A Total_FileType[0][typea] = malloc(xxx);
strcpy(Total_FileType[0][typea],newname);
//也可以不申请控制,直接让数组元素指向数据,同样适用*提取数据
*(Total_FileType[0][typea])读不到数据么?
参考技术B char * Total_FileType[MAXTYPE][MAXTOTAL] = 0 ;

是这个问题,把那个*去掉就好了,不应该定为指针。
然后这么写
strcpy(Total_FileType[0],newname)typea++本回答被提问者采纳
参考技术C 可以直接让指针有所指,比如指向字符串

关于c语言二维数组列指针初始化

关于c语言二维数组列指针初始化下图关于那个列指针的初始化有不懂。p=a[0],p=*a,p=&a[0][0]。书上说这三者等价,但是我有点不懂。
1.按照指针初始化的定义,int *p=&a[0][0];这一点,完全没问题,就算传了二维数组的首地址给指针。
2.但是,p=*a怎么会和上面等价呢 我记得*a不是去这个数组的第一个值吗,怎么能用值传给一个指针,或者说一个指针指向一个值。
3.p=a[0],这个不是传的是第一行的地址吗,和第三个具体的首地址能等价?
恳求各位前辈学长能够解惑(。ò ∀ ó。)感激~

参考技术A 你可以把二维数组a看成一个一维的指针数组,*a与a[0]等价,这样是不是好理解了?本回答被提问者和网友采纳 参考技术B Hubby and

以上是关于C语言 指针二维数组怎么初始化的主要内容,如果未能解决你的问题,请参考以下文章

C语言 如何定义一个二维指针数组?

c语言中怎样实现对二维数组元素进行赋值并输出。

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

C 语言二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )

c语言中如何通过二级指针来操作二维数组

C语言怎么用for循环为二维数组赋值?请举个例子。