C++问题,关于数组指针的

来源:百度知道 编辑:UC知道 时间:2024/09/23 02:20:13
int c[3][3]={1,2,3,4,5,6,7,8,9};
printf("%ld\n",(*c+1));//这里输出的是什么?
if(int(c)==int(*c))
printf("equl"); //他们为什么相等?

c 是数组,不是指针。 所以没有 *c 形式,只有 &c[0][0] 之类形式。

printf("%ld\n",(*c+1));//这里输出的是什么?
有可能是地址 &c[0][1],看编译器如何处理 普通 变量的*c 形式

int(c)==int(*c), 编译器如果把 (int)(c) 处理成 (int)(&c[0][0])
(int)(*c) 也处理成 (int)(&c[0][0]) 则两者相等。

强调一下,按语法,c 是数组,不是指针。 所以没有 *c 形式,只有 &c[0][0] 之类形式。

printf("%ld\n",(*c+1));//这里输出的是c数组第一个元素的值+1
printf("equl"); //这里肯定是不相等的 一个指针不可能等于一个数
并且c语言的类型检测是不允许这样做的