以下是代码:
char * pointer, ** ptr2;
char ptr[5][100];
strcpy(ptr[0],"fasfasf fasfas");
strcpy(ptr[1],"sfasfa");
ptr2=ptr;
当试图读取ptr2中的内容时,它告诉我它无法访问该内存,但我可以通过ptr访问它。关于它为什么失败的任何想法?感谢
答案 0 :(得分:0)
正如一些程序员老兄所说,数组数组与指针指针不同。
问自己这个问题,ptr[0]
给你什么?答案:一组100个字符。
因此,ptr
就像一个指向100 char
s数组的指针,而不是像你一样,指向指向char
的指针。
如果我们要声明一个与ptr
一样的指针,我们就像这样声明:
char (*ptr2)[100]
完成后你可以做
ptr2 = ptr;
就像你没有遇到任何问题一样。
答案 1 :(得分:0)
问题在于:
ptr2=ptr; // assignment from incompatible pointer type.
使用多维数组时,我观察到,为了将数组的起始点传递给变量,必须提取数组第一项的地址。
char *ptr2;
char ptr[5][100]; // bi-dimensional
char another_ptr[100]; // uni-dimensional
ptr2 = ptr; // COMPILER COMPLAINS
ptr2 = &ptr[0][0]; // array bi-dimensional - COMPILER DOES NOT COMPLAIN
ptr2 = another_ptr; // COMPILER DOES NOT COMPLAIN