C语言选择题目!请这种解释为什么?谢谢!

来源:百度知道 编辑:UC知道 时间:2024/07/02 12:10:21
若有说明:“ int i,j= 7,*p=&i;”,则与“ i=j;”等价的语句是( )

①i=*p; ②*P=* &j;

③i==&j; ④i=* *p;

请回答每个选项的意思及为什么?谢谢各位!
谢谢各位!但是我不知道哪个答案对啊!请高手详解!

i == j是个判断,与之等价的

1。i=*p,因为*p=&i;所以,p指向i,*p就是i,这句话虽然是真的但是和i == j 没有关系。错

2。*P=* &j; *p = i;(上边已解释) j先取地址再解引。其实就是j。因为*和&是互运算。我以前在你别的问题给你解释过这个。
所以相当于i == j;是正确的!

3。i,j都是整形,&j是j的地址,是一个指针类型。明显不对

4。i=* *p; *p就是i,再对i解引*是错误的!

给你总结下

int i 是整形。
int *p 是指针类型就是地址型。是一个意思

赋值时应该p = &i; 就是整形取地址了是指针型
*p就变成了一个整形
&p是一个指向p的地址。&&p是一个指向p的地址的地址。

一个*和一个&可以抵消,有点逆运算的味道

i可以取地址,但是他不是指针。不可以*解引操作。只有地址(指针)才可以*操作

另外,说选3,引用的朋友。。。请你们好好温习下书
首先这是c问题,没有引用,其次引用的定义,使用方法这么基本的东西也说错。。。。

第一项为i==i,指针p就是指向i的,
第二项为i==指针j的内容,这里没有定义指针j,&j是引用,你说的应该是c++
第三项i==j正确,引用
i==*i,就是i对应的指针,也没定义

1 把(*p)的内容给 I
2 把 J 即7给地址*P
3 I和J的内容相等
4 I和P 的内容想等
应该选 (3)和(4)吧!

答案:②
①将指针p所指向地址中存储的值赋给i。
②将j的值赋给p所指向地址中存储的i
&是取地址符,题中P是指针,*p“p指针所指向地址中存储的值(此题中是i)”
**p 一般用于多维数组指针。

(1)最基本的东西了,去看书去

B
②*P=* &j;