发布网友 发布时间:2022-05-10 07:35
共3个回答
热心网友 时间:2023-11-21 19:23
选B
A错误。类型不对,++p是int*,a[1]是int。
B正确。p++只改变了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 )
参考资料来源:百度百科-条件运算符
热心网友 时间:2023-11-21 19:24
a++ 和 p++ 都是左值,在语句里,只能出现在赋值号左边。理论上 b,c,d 都不对。热心网友 时间:2023-11-21 19:24
选B