* ptr [10]和(* ptr)之间的差异[10]

前端之家收集整理的这篇文章主要介绍了* ptr [10]和(* ptr)之间的差异[10]前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
对于以下代码
int (*ptr)[10];
    int a[10]={99,1,2,3,4,5,6,7,8,9};
    ptr=&a;
    printf("%d",(*ptr)[1]);

它应该打印什么?我期待这里的垃圾值,但输出为1.
(我得出结论,初始化这种方式指针数组,即ptr [10]将按顺序开始指向[10]的元素.

但是这个代码片段怎么样:

int *ptr[10];
int a[10]={0,9};
*ptr=a;
printf("%d",*ptr[1]);

它给出了分段错误.

解决方法

int * ptr [10];

这是一个包含10个int *指针的数组,不像你想象的那样,是一个指向10个int数组的指针

int(* ptr)[10];

这是一个指向10 int数组的指针

我认为和int * ptr一样;因为两者都可以指向一个数组,但是给定的形式只能指向一个10个整数的数组

猜你在找的C&C++相关文章