关于数组指针的问题
#include <stdio.h>int main()
{
int a={1,2,3,4,5,6,7,8,9,10};
int (*p) ;
p = &a; //这样写的话这句警告,警告信息>>warning: assignment from incompatible pointer type
//但是把int (*p) 改成 int(*p) (而且是只能是10,其他的数字一样有警告信息)就没有警告信息了,这是为什么呢??
printf("%d,",p);
return 0;
}
指针是一种类型,这种类型和指向的数据要求一样。
比如
int a={1,2,3,4,5,6,7,8,9,10};
int (*p) =&a;
为什么能正常执行,是因为
我们这样去理解,
int *p代表的是要指向1个int类型元素的地址,即int *p=&n;,n的定义应该为int n;。就是砍掉前面int*p的1个*之后的类型,应该和后面的n是一致的。
所以,int (*p) ,你砍掉1个*之后,你指向的类型是int a ,不是int a。
那么为了指向int a;,你就需要定义为int (*p);。 另外,你看编译器输出的警告信息,也是
>>warning: assignment from incompatible pointer type
警告:来自不兼容指针类型的赋值
行客 发表于 2019-1-15 11:34
指针是一种类型,这种类型和指向的数据要求一样。
比如
好的,谢谢
页:
[1]