就一维数组而言,其数组名称也是第一个元素的地址.所以可以将它分配给指针,如下所示:
char data[5];
char* p_data=data;
Run Code Online (Sandbox Code Playgroud)
所以我认为它应该与二维数组相同.数组名称应该是第一个元素地址的地址.所以,我想做这样的事情:
char data[5][5];
char** pp_data=data;
Run Code Online (Sandbox Code Playgroud)
然后我收到警告说指针类型char**与之不兼容char[ ][ ].
为什么会这样?我理解指针和数组概念错了吗?
你是对的,数组通常由指向其第一个元素的指针引用.但是当你拥有"二维"阵列时
char data[5][5];
Run Code Online (Sandbox Code Playgroud)
你实际拥有的是一个数组数组.数组的第一个元素data是一个包含5个字符的数组.所以这段代码可行:
char (*pa_data)[5] = data;
Run Code Online (Sandbox Code Playgroud)
这pa_data是一个指向数组的指针.编译器不会抱怨它,但它实际上可能对您有用,也可能没有用.
确实,像你这样的指针指针char **pp_data可以像二维数组一样运行,但你必须做一些内存分配才能使它工作.事实证明,在阵列的阵列char data[5][5]没有指针TO- char为pp_data是一个指针.(特别是,你不能说像pp_data = &data[0][0].)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |