C语言 指针变量

若有变量定义:intn=2,*p=&n,*q=p;则以下非法的赋值语句是()A.q=nB.p=qC.*p=*qD.n=*q答案是A但为什么啊?谁能给我讲一讲啊?我刚学C语... 若有变量定义:int n=2,*p=&n,*q=p; 则以下非法的赋值语句是( )
A.q=n B.p=q C.*p=*q D.n=*q

答案是A 但为什么啊?谁能给我讲一讲啊? 我刚学C语言 请不要讲的太深奥!
展开
 我来答
freeeeeewind
2013-12-14 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1330万
展开全部
1)先看变量q的定义:int *q ;
q是一个指针(地址),在指针(地址)所指向的位置存放了一个整型值
2)再看答A:q = n;
这个赋值表达式表示,将变量q赋值为变量n,而n的定义为 int n 初值为2
3)答案A错误的原因:按照1)中的定义,q的值只能是地址,而q=n却将整型变量值直接赋给地址。所以是错误的!
百度网友e88eac6
2013-12-14 · TA获得超过2274个赞
知道小有建树答主
回答量:413
采纳率:73%
帮助的人:204万
展开全部
在定义里q被定义为指向整型数据的指针变量,n被定义为整型变量。C语言规定指针变量只能赋予数据的地址,不能赋予其他任何数据。所以A是错误的。
B ,p、q都是指向整型数据的指针,所以可以互相赋值。
C,*p、*q表示的都是整型数据,所以可以互相赋值。
D,n、*q也都是整型数据,所以可以互相赋值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
空雪梦见
2013-12-14 · TA获得超过5597个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1181万
展开全部
很简单,q的类型是int*,n的类型是int,这两个之间不能互相赋值。
第二个,前后类型都是int*
第三个,前后类型都是int
第四个,前后类型都是int
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
古尔格
2013-12-14 · TA获得超过627个赞
知道小有建树答主
回答量:300
采纳率:50%
帮助的人:259万
展开全部
int *p=&n == p=&n
int q=p == q=&n
*p是一个指针, 指向的是地址不是变量值。如果强行把2作为地址赋给指针,程序继续进行下去的话,很可能会篡改地址2的值,这是非法的地址修改,因为你无法预料地址2是给谁的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
湛蓝水晶
2013-12-14 · 知道合伙人数码行家
湛蓝水晶
知道合伙人数码行家
采纳数:1388 获赞数:9352
毕业北京科技大学数学与应用数学专业,学士学位,IT行业6年从业经验。现任公司项目经理。

向TA提问 私信TA
展开全部
q是 int*,n是int,类型不兼容。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
b1514966
2013-12-14 · 超过10用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:31.7万
展开全部
n 是int类型,q 是指针类型,不能直接赋值,要赋值要加引用 *q=&n
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式