计算机二级,C语言,请问这道选择题题目是不是有问题?
6个回答
展开全部
只是一个指向指针的指针吧,没什么毛病啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没问题,答案是8。
追问
该怎么理解呢
追答
在定义变量的时候,如*p,是表示定义一个p指针。在非定义阶段*p表示p指针所指位置的数据,这个时候的指针是p,而不是*p。(列如:int a=2,*p=&a,b;b=*p;定义一个指针p,这个指针指向a存储的首地址。b=*p,其实相当于b=&p,把指针p所指向的地址里面的数据复制给b).
*pk=&k.表示定义一个pk指针,这个指针指向k的地址。
所以*(p=&n),表示把n的地址复制给指针p,这个时候仍然是一个地址(或者叫指针),所以需要通过取地址符(或指针符*)就表示这个地址所对应的数据。。。理解这个概念,就容易了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没问题啊,对的啊
追问
该怎么理解呢
追答
首先*p表示指针,他存放的是地址,&是取地址符号,然后 对指针用*表示解地址,解出地址里面的东西。
然后 pk = &m,意思就是把m也就是4的地址保存到pk里面,这样pk就指向4的地址了,那么*pk就可以解开地址得到里面的值也就是4;
这里 就是解开pk 和pm的地址,把他们地址里面的东西拿给n。
怎么理解给n的呢,(p=&n),表示p存放n的地址,然后*就把地址里面的数值取出来,让他替换成等号右边的值,这样,右边算出来的结果8,就被赋值到p存放的地址里面了,而p本来就是存放的n地址,那么n的值自然就改变了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
实际就是n变成2*4=8。中间的是*号,你可能误解了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案是8,没问题
追问
该怎么理解呢
追答
等号左边首先看括号里面p=&n,代表p是n的地址,然后*(p = &n) = *(&n) = n
再看等号右边 因为pk = &k,那么*pk = k=2, 同理*pm = m=4
那么 *pk*(*pm) = 2*4 = 8;
所以n = 2*4 = 8
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询