无法访问地址X处的内存

时间:2016-11-01 15:34:48

标签: c memory

以下是代码:

  char * pointer, ** ptr2;
  char ptr[5][100];

  strcpy(ptr[0],"fasfasf fasfas");
  strcpy(ptr[1],"sfasfa");

  ptr2=ptr;

当试图读取ptr2中的内容时,它告诉我它无法访问该内存,但我可以通过ptr访问它。关于它为什么失败的任何想法?感谢

2 个答案:

答案 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