1809228982 发表于 2019-1-15 11:16:53

关于数组指针的问题

#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;
}

行客 发表于 2019-1-15 11:34:43

指针是一种类型,这种类型和指向的数据要求一样。

比如
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);。

行客 发表于 2019-1-15 11:36:37

另外,你看编译器输出的警告信息,也是

>>warning: assignment from incompatible pointer type
警告:来自不兼容指针类型的赋值

1809228982 发表于 2019-1-16 12:26:37

行客 发表于 2019-1-15 11:34
指针是一种类型,这种类型和指向的数据要求一样。

比如


好的,谢谢
页: [1]
查看完整版本: 关于数组指针的问题