代码如下:
char * pointer, ** ptr2;
char ptr[5][100];
strcpy(ptr[0],"fasfasf fasfas");
strcpy(ptr[1],"sfasfa");
ptr2=ptr;
当尝试读取 ptr2 内部的内容时,它告诉我它无法访问该内存,但我可以通过 ptr 访问它。关于它为什么失败的任何想法?谢谢
最佳答案
正如一些程序员所说,数组的数组与指向指针的指针不同。
问自己这个问题,ptr[0]
给了你什么?答案:100 个字符的数组。
因此,ptr
的作用就像一个指向 100 个 char
数组的指针,而不是像您尝试的那样,是一个指向 的指针字符
。
如果我们想声明一个像您的 ptr
一样的指针,我们可以这样声明:
char (*ptr2)[100]
完成之后你就可以做
ptr2 = ptr;
就像您尝试没有任何问题一样。
关于无法访问地址 X 处的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40363379/