所以,在作为参数传递的时候,可以自动退化成 int (*a)[M] (*a)[M] 是个指针,指向一数组 看 这个指针如何初始化
C/C++ code
typedef int (*A)[10]; A a; a = (A)malloc(sizeof(int) * 10); [解决办法] int array [20]; int **ptr=array; //编译出错,不信你看。。。 [解决办法] 应该写成这样int array[20]; int **ptr=&array; 看清楚了... [解决办法] 如果编译都通不过。那讨论指向哪个内存数据好象无意义吧 [解决办法] 使用指针还是谨慎为好。 ------解决方案--------------------
感觉很简单,但是总是不太清楚。 [解决办法]
[解决办法]
[解决办法] int a[20]; int **p; p是二级指针,二级指针是用于指向指针的指针,也就是说它所批针的对象必须也是一个指针 只能这样用. int a[20]; int *p = a; int **s = &p; 如果直接这样用: s = a; 在C编译器下会报这个警告int ** ' differs in levels of indirection from 'int * 这两种变量的类型是不一样的,就相当于这样 int a; int **p = &a; 你说这样做对吗? 二级指针是指向指针的指针,int a[2],,, 数组名a相当于数组的首地址,如果用&a就是指向这个一维数组的地址,意义一定要区分开来,
[解决办法]
[解决办法]
[解决办法] 我觉得他的本意应该是一个二维指针,指向指针的指针,不过应该写成: int **ptr=&array [解决办法] 就看看 不说话