【发布时间】:2014-10-10 08:54:12
【问题描述】:
对于我的问题的简单性及其与已经提出的问题的相似性,我深表歉意。我已经研究了类似的问题并研究了几个小时,但我无法纠正我所拥有的任何阻碍我理解它的误解。
在下面的代码摘录中,警告“assignment from incompatible pointer type [enabled by default]'出现在注释为'Warning'的行的等号处。
char * readFile(int width, int height)
{
char mapArray[width][height];
char *p;
p = mapArray; // Warning
return p;
}
这是为什么呢?
我目前的理解是“mapArray”包含二维字符数组的第一个元素的地址。 'p' 的定义是,它将来会包含内存中存在 char 的另一个位置的地址。然后将“p”的值设置为“mapArray”的当前值,因此它现在包含所述数组的第一个元素的地址。该函数返回 p 的值,它是一个地址,即一个指针,指向内存中的一个 char。
如果有人能告诉我我的理解在哪里下降,以及不兼容的指针类型在哪里进入,我将不胜感激。
【问题讨论】:
-
p = mapArray;-->p = *mapArray;但不能在函数中返回本地地址。 -
@BLUEPIXY 这也使警告消失了。也非常感谢!这种修改是否意味着“p”现在包含第一个元素的地址?为什么地址 in mapArray 是本地的,而地址 of mapArray 不是?
-
是的 p 现在指向
&mapArray[0][0]。 为什么mapArray中的地址是本地的:mapArray指向区域会在函数作用域结束时释放。
标签: c arrays pointers warnings