若有说明:int i,j=7,*p=&i;,则与i=j; 等价的语句是( ).A.i= *p;B.*p=*&j; C.i=&j; D.i=* *p;
问题描述:
若有说明:int i,j=7,*p=&i;,则与i=j; 等价的语句是( ).A.i= *p;B.*p=*&j; C.i=&j; D.i=* *p;
有一个问题没有搞清楚:根据int i 得 i 是一个数,而&i则表示一个地址,而*p表示一个指针变量,表示一个数了.上面的*p=&i,不就表示把一个地址赋值给一个变量了嘛?
我是个菜鸟,这样理解是不真确的,我该怎样理解呢?
答
解析:题中说,定义整型变量i和j,并且初始化了把7赋值给变量j.*p=&i是说使整形指针变量p指向了变量i的地址(即变量p中存储了变量i的地址).i=j是说给7的值赋给变量i,即i的值为7.与之等价,那就是同样是赋值表达式,B答案 *p=*&j;中&j是取地址,*&j表示取地址中的值,即为7,赋给变量p里的值(即是i).