"若有说明: int i,j=7, *p=&i;, 则与i=j; 等价的语句是()."

2024-12-12 11:04:22
推荐回答(3个)
回答1:

等价于i=&j。

i=j的意思是将j的值赋予i,即i和j的值相等。

在选项中,i= *p的意思是将指针p所指向的值赋予i;*p=*&j的意识是将j的值赋予指针p所指向的值,而指针p所指向的值是i,就实现i=j;i=&j的意思是将j的地址赋予给i;i=* *p的意思是将指针p所指向的值作为一个地址,将地址所指向的值赋予给i。

指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。

扩展资料:

两个地方要注意:

1、在程序声明变量的时候的*,只是表明“它是一个无符号整数,这个整数指向某个内存地址,一次访问sizeof(type)长度”。这点不要和(*)操作符混淆;

2、在C++程序声明变量的时候的&,只是表明“它是一个引用,这个引用声明时不开辟新空间,它在内存分配表加入新的一行,该行内存地址等于和调用时传入的对应参数内存地址”。

3、这点不要和(*)声明符,(&)操作符混淆。

参考资料:

百度百科-指针

回答2:

根据定义,指针p指向i的地址,因此p指向地址的内容*p就是i的值
i=*p,相当于i=i
*p=*&j,相当于i=j,正确
i=&j,地址不能赋值给整型变量
i=**p,p不是一个二级指针,**p强行把i的值视作一个地址,会导致不可预知的结果

回答3:

B, *p为P指针所指内容I,&j为j地址,*&j为j地址中的内容。故B