C语言菜鸟问题(37)

来源:百度知道 编辑:UC知道 时间:2024/06/21 00:43:31
若有说明:int i,k=2,*p=&i;,则能完成i=j赋值功能的语句是()
A i=*p;
B p*=*%j;
C i=&j;
D i=**p

请帮我讲解一下 我要的不是正确答案。。。在线等 谢谢啦
修改一下 题目中的类型定义写错了 是:int i,j=2 不是k

都是错的,都编译过不了,来看看3楼说的这个<p=&j还差不多>

意思只是把j的地址赋给了p,现在的p已经不值向了i的地址

根本都没实现i=j;
如果是这样还可以:*p=j;<把j的值装入p值向的内存地址,这样i就=2了>

这样也可以: *p=*&j;

还有2楼说的是什么东西呀?
*p=&j<后面是地址,前面是值>如果想赋值确实可以这样*p=(int)&j;确实是相当与把j的地址值放到了
p指向的空间里面了
如果p的地址为0x1234 j的地址为0x2220
那么*p=16进制的0x2220<他只是一个整型数据>,那么**p根本就没意义
如果要达到你说的哪个效果,应该是这样的吧
*p=(int)&j;

*p=*(int *)(*p);这样也可以实现i=j;

在VC6.0下试的,如果不认同就当我瞎说

j是什么类型的?

题目莫名其妙,j是什么东西,题目是不是有问题?
*p=&i是*p=&j吧,这样就是选D,因为*p=&j相当于*p赋值为j的地址,i再赋给**p,也就是赋值给j了!具体自己再对照一下题目!

p=&j还差不多

a.i=*p,p=&j,*p=j,对的
b.什么东西啊...
c.i=&j,这个意思是i=存储j的内存地址,错的
d.i=**p,(因为p=&j,所以*p=j,那么**p=*j),错的

说一下:
int *p=&i;(在定义时付值)相当于,
int *p;
p=&i;
不是什么*p=&i;

//-------------------------------------------
都是错的,都编译过不了,来看看3楼说的这个<p=&j还差不多>

意思只是把j的地址赋给了p,现在的p已经不值向了i的地址
//-------------------------------