C和指针一条题目请教?
int array [20];
int **ptr=array;
问 ptr+1指向哪里?
我的答案是指向*array[1]?
[解决办法]
int array [20];
int **ptr=array; —— 这个不能赋值吧?
[解决办法]
这题目哪来的?
[解决办法]
可以认为这是一条错误的语句.
[解决办法]
[解决办法]
int **ptr=array; 编译通不过
[解决办法]
int array [20];改成
int (*array) [20];则答案就是你想要的
[解决办法]
[解决办法]
[解决办法]
[解决办法]
[解决办法]
[解决办法]
我前面好像改的不对,既然你只是要知道它指向什么,那么我认为
指向地址 &array + 1
[解决办法]
不是,它根本没有指向array的内容,而只是在array的地址上加了1而已,这个地址很可能是未分配的
[解决办法]
int **ptr是指向指针的指针。
[解决办法]
这题目坑人的,,
[解决办法]
[解决办法]
以下是我的理解:
int a[N][M];
int **p;
前者的内存分配一定是连续的,例如 a[k][M-1] 的地址和 a[k+1][0] 的地址一定是连续的 (k+1 < N)
所以,在作为参数传递的时候,可以自动退化成 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
[解决办法]
就看看 不说话