为什么不是这样呢?请大家帮忙给我讲一下呀。谢谢!

来源:百度知道 编辑:UC知道 时间:2024/06/02 06:13:39
在C语言中,先定义了一个指向int *p;再定义一个二维数组int a[][];
此时如果定义一个int i;为什么p=a+i;不正确呢,a本来就是一个指针呀,反而定义p=*(a+i);呢?
;;

a是一个二维数组,a是指针没错,但它指向的还是一个地址类型的数据。
因此a+i是一个指向地址的指针,而*(a+i)是指向真正数据的指针
p也是指向数据的指针

等号两边数据类型要匹配,所以有p=*(a+i);
而 p=a+i; 两边类型不匹配

这样说你明白没有?