对于int*p;int a[];p=a;的合法运算是什么?

A.++p;相当于a[1]b.若p中的地址为100则p++;运算后则其值为100c,p=a;p++相当于a++d、a++... A.++p;相当于a[1]
b.若p中的地址为100则p++;运算后则其值为100
c,p=a;p++相当于a++
d、a++
展开
 我来答
帐号已注销
2021-01-19 · TA获得超过77.1万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:165万
展开全部

选B

A错误。类型不对,++p是int*,a[1]是int。

B正确。dup++只改变了p这个指针的值,并没有改变p指向的地址的值。

C错误。int[]类型不允许++操作。

D错误。int[]类型不允许++操作。

例如:

++p; 相当于 a[1] 。

准确表达是 ++p 指向的地址是 &a[1]; 因为前面 有 p=a; 即初始,让p指向了 a 的始地址。

这里 ++ 是前缀加加,在表达式里 要先增1再使用,所以指向了 a[1]。

#include <stdio.h>

int main () {

int *p;

int a[]={1,2,3,4,5}; //这里要让a有存放空间,数组大小要确定下来。

p=a;

++p;

printf("%d %d\n",*p, a[1]); //输出数值

printf("%p %p\n",p, &a[1]); //输出地址

return(0);

}

扩展资料:

条件运算符优先级高于赋值、逗号运算符,低于其他运算符

例如:

⑴ m<n ? x : a+3

等价于:(m<n) ?(x) :(a+3)

⑵ a++>=10 && b-->20 ? a : b

等价于:(a++>=10 && b-->20) ? a : b

⑶ x=3+a>5 ? 100 : 200

等价于:x= (( 3+a>5 ) ? 100 : 200 )

参考资料来源:百度百科-条件运算符

金色潜鸟
2020-07-10 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5674万
展开全部
a++ 和 p++ 都是左值,在语句里,只能出现在赋值号左边。理论上 b,c,d 都不对。
合法运算是A。
++p; 相当于 a[1] 。
准确表达是 ++p 指向的地址是 &a[1]; 因为前面 有 p=a; 即初始,让p 指向了 a 的始地址。
这里 ++ 是前缀加加,在表达式里 要先增1再使用,所以指向了 a[1]。
#include <stdio.h>
int main () {
int *p;
int a[]={1,2,3,4,5}; //这里要让 a 有存放空间,数组大小要确定下来。
p=a;
++p;
printf("%d %d\n",*p, a[1]); //输出数值
printf("%p %p\n",p, &a[1]); //输出地址
return(0);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
YZX浪子
2020-07-10 · TA获得超过110个赞
知道小有建树答主
回答量:260
采纳率:86%
帮助的人:64.4万
展开全部
选B
A.错误。类型不对,++p是int*,a[1]是int
B.正确。p++只改变了p这个指针的值,并没有改变p指向的地址的值
C.错误。int[]类型不允许++操作
D.错误。int[]类型不允许++操作
故选B
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式