设有定义: int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是( )A*p=*q;

Bp=q;C*p=&n1;Dp=*q;请大家解答时最好说下过程,我基础不是很扎实... B p=q; C *p=&n1; D p=*q;请大家解答时最好说下过程,我基础不是很扎实 展开
 我来答
十口二
2012-02-03 · TA获得超过113个赞
知道答主
回答量:25
采纳率:0%
帮助的人:6.6万
展开全部
诚心求最佳答案,尽力回答,欢迎最问
题目中定义将逗号拆开详写:
int n1 = 0; //n1 的初始值为 0
int n2; //n2 声明
int *p; //声明一个int型 的指针p
p = &n2; //指针p 指向 n2的地址
int *q; //声明一个 int型的指针q
q = &n1; //指针q 指向 n1的地址
赋值语句
n2 = n1; // 将等号右边n1的值 0,赋给等号左边n2
选项:
A *p = *q; //将指针q指向的地址里的值(即n1的值),赋给指针p指向的地址里(n2)
B p = q; //p 和 q 分别存放n1、n2变量地址的,该地址是由系统分配的,不能赋值
C *p = &n1; // *p 是指针p指向的地址里的值,&n1是n1的地址,不能赋值
D p = *q; //p 存放的是n2的地址, *q是指针q指向的地址里的值,不能赋值
追问
谢谢你的解答,能不能在帮我看最后一题,拜托..呵呵...有以下程序#include  main ( ){ int n,*p=NULL;*P=&n;printf("input n:");scanf("%d",&p);printf("output n:");printf("%d\n",p);}改程序试图通过指针P为变量n读入数据并输出,但程序有多出错误,以下语句正确的是( )A int n,*p=NULL;B *p=&n; C scanf ("%d",&p)D  printf("%d\n",p);答案是A,但我不知道原因
追答
A int n, *p = NULL;       //声明变量n,声明指针p,指针p的初始值为NULL(指针p指向的地址为空)
是对的。
B 错的原因上题有
C 错,是因为scanf ("%d",p); 而不是&p,p就是存放的是n的地址(即&n意思)
D 错,其实原因上题也有,printf("%d",*p);才是对的
简约式迷恋
2012-02-03
知道答主
回答量:39
采纳率:0%
帮助的人:25.8万
展开全部
选A
p,q分别为n2,n1的地址,对*p,*q的操作是对地址对应的内容(n2,n1)的操作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式