指针的指针不能指向整个数组吗?
用函数指针指向数组可以正常编译但是我想用指针的指针指向数组为什么编译不了。
我的理解是数组也可以当作指针来用那么指针的指针可以指向数组。 求解啊 数组当作指针来用那是一级指针 如
int array;
array指向数组首地址array
而二级指针只能指向指针数组 如
int *array;
int **p = array是合法的
二级指针在指向时是逐级指向的
上面这个例子
*p 指向 array 这个指针
而**p 指向array这个指针指向的东西
如果将以及指针赋值给二级指针那就没法对应了
风骚的小胖子。 发表于 2018-10-7 11:54
求解啊
&array 是整个数组,不是首元素的地址,已经是最高级别的范围了,你直接用单指针就行了。然后下面需要多一个解引用。
int *p 或者 int* p 都可以,但是你可以这样看。int (*p),参考整型的指针。int* (*p) 参考指向整型的指针。
&array 是一个地址,没有参考元素,所以用单指针就好。数据类型不匹配。 1005204767 发表于 2018-10-7 12:17
数组当作指针来用那是一级指针 如
int array;
array指向数组首地址array
我的理解是这样你看对不对。
指针的指针指向指针的地址,数组名可以当作指针 但是他的实质不是指针,就和指针能做左值而数组名不能做左值一个性质。 claws0n 发表于 2018-10-7 12:26
&array 是整个数组,不是首元素的地址,已经是最高级别的范围了,你直接用单指针就行了。然后下面需要多 ...
我的理解是这样你看对不对。
指针的指针指向指针的地址,数组名可以当作指针 但是他的实质不是指针,就和指针能做左值而数组名不能做左值一个性质。
老哥你这个解答是没明白我的意思 。我的意思是为什么二级指针不能指向数组,是本来就不能指还是我书写错误还是什么的。 而不是要别的来指向数组 别的指向数组我懂。
风骚的小胖子。 发表于 2018-10-7 12:34
我的理解是这样你看对不对。
指针的指针指向指针的地址,数组名可以当作指针 但是他的实质不是指针,就 ...
(存放数值的)数组名相当于一个一级指针,只能用一级指针来指向。
而(存放指针的)数组名相当于一个二级指针,因为它里面的指针还有指向。它只能用二级指针指向。
同理,如果存放指针的数组里面 存放的指针是个二级指针,那么数组名就相当于一个三级指针,需要用三级指针来指向。
多级指针指向是逐级对应的,比如你如果把一个二级指针**p指向一个一级指针*q。那么*p 就等于q指向的值。指针是地址,怎么能等于值呢? 1005204767 发表于 2018-10-7 12:48
(存放数值的)数组名相当于一个一级指针,只能用一级指针来指向。
而(存放指针的)数组名相当于一 ...
懂了!!谢谢大哥。但是还有一个问题里面存放指针的数组
int a=10; int b=20;
int **array={&a,&b}
取值 是 (*(*array+1))=20
但是改为char **array={"带我飞",“带你飞”}
取值怎么取?我看小甲鱼老师就不是用指向指针的指针来指这个数组 而是用in *(*P)[]来指向这个数组。这个能否用指向指针的指针来指?
风骚的小胖子。 发表于 2018-10-7 12:36
我的理解是这样你看对不对。
指针的指针指向指针的地址,数组名可以当作指针 但是他的实质不是指针,就 ...
数据类型不匹配
3 楼的
而二级指针只能指向指针数组 如
int *array; | int* array; //数组的元素是指针<==> int array;
int **p = array; 是合法的// 这个不是二级指针 | int* (*p) = array;<==> int *p = array;
你的 array 是 int 型,不是 int* 型,所以不能用 int**p
页:
[1]