对于以下代码:
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个整数的数组