俩个指针连用是什么意思如 * * s
答案:1 悬赏:60 手机版
解决时间 2021-02-25 01:14
- 提问者网友:别再叽里呱啦
- 2021-02-24 09:44
俩个指针连用是什么意思如 * * s
最佳答案
- 五星知识达人网友:枭雄戏美人
- 2021-02-24 09:50
你说的两个指针连用有两种情况,用处是不一样的。
(1)当**用在变量声明的时候,比如下面的例子
int a = 1;
int *b;
b=&a;
int **c;
c=&b;
这个时候,变量b表示它是一个指向int型的指针。我们应该知道变量a中存储了一个值,1
那么指针中存储了什么呢?是地址,另一个变量的地址
我们理解这个“=”符号时,最好从内存的角度去理解,也就是说,变量a中的内存,存储了一个值1,
变量b中,通过第三行的运算存储了a的地址,“&”是取址符。
那么变量c呢,它表示一个指向 “int型指针” 的指针,既然是指针,那么它一定储存的是地址,储存的是谁的地址?是一个int型指针的地址,所以通过最后一行的赋值操作,把变量b的地址赋给了它。
(2)当**用在运算上的时候,是取值符,也就是取出该内存中存储的值
对于指针*,该符号的结合顺序是从右到左,**s实际上是*(*s),先运算*s,即取出变量s对应内存中的值,该值有可能是一个数,例如1,也可能是一个地址,如果是一个数,那**s就失去了意义,这个理由我也仅仅是猜想,我认为“*”实际上是通过地址取值的一种运算,由于数不是地址当然就不行。如果*s运算得到的是一个地址,那么*(*s)就是再对这个地址进行运算求值。求得的是什么结果,要看原先变量s是怎么定义赋值的。
例如上例中的c,**c当然是1,但如果原来是 int ***c,那么**c得到的还是一个地址。
(1)当**用在变量声明的时候,比如下面的例子
int a = 1;
int *b;
b=&a;
int **c;
c=&b;
这个时候,变量b表示它是一个指向int型的指针。我们应该知道变量a中存储了一个值,1
那么指针中存储了什么呢?是地址,另一个变量的地址
我们理解这个“=”符号时,最好从内存的角度去理解,也就是说,变量a中的内存,存储了一个值1,
变量b中,通过第三行的运算存储了a的地址,“&”是取址符。
那么变量c呢,它表示一个指向 “int型指针” 的指针,既然是指针,那么它一定储存的是地址,储存的是谁的地址?是一个int型指针的地址,所以通过最后一行的赋值操作,把变量b的地址赋给了它。
(2)当**用在运算上的时候,是取值符,也就是取出该内存中存储的值
对于指针*,该符号的结合顺序是从右到左,**s实际上是*(*s),先运算*s,即取出变量s对应内存中的值,该值有可能是一个数,例如1,也可能是一个地址,如果是一个数,那**s就失去了意义,这个理由我也仅仅是猜想,我认为“*”实际上是通过地址取值的一种运算,由于数不是地址当然就不行。如果*s运算得到的是一个地址,那么*(*s)就是再对这个地址进行运算求值。求得的是什么结果,要看原先变量s是怎么定义赋值的。
例如上例中的c,**c当然是1,但如果原来是 int ***c,那么**c得到的还是一个地址。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯