设有int a=2,b=1,*p=8a;,则扒行语句 =3 A. B. C. D. 2 3 SLO a= a+b:后,变量a的值为
时间: 2024-03-26 18:37:31 浏览: 16
这道题目有一些错误,我假设你想问的是:设有int a=2,b=1,*p=&a;,则执行语句 *p=3; 后,变量a的值为多少?
执行语句 *p=3; 后,指针p所指向的变量a的值被修改为3,因此变量a的值也变成了3。可以这样理解,指针p指向变量a的内存地址,通过*p可以操作该内存地址上的值,将其修改为3即可。
相关问题
设int *p,i 以下正确的语句是 A.*p=10; B.i=p; C.i=*p; D.p=2* p+1;
正确的语句是C.i=*p;。这条语句将p所指向的整数值赋给了变量i。其他语句存在一些问题:
A.*p=10;:这条语句试图将整数值10赋值给p所指向的整数,但是p是一个指针,无法直接赋值。
B.i=p;:这条语句试图将指针p赋值给变量i,但是i是一个整数类型的变量,无法存储指针。
D.p=2*p1;:这条语句试图将指针p的值赋为2乘以p1的地址,但是p1是一个未定义的变量,无法使用。同时,这条语句也存在类型错误,因为指针的加减操作是根据指向类型的大小进行的,而不是简单的地址加减。
若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是 A 。 A. q=a; B.*p=*q; C.a=*q; D.p=q;
答案是A. q=a。
解析如下:
- B. *p = *q; 是合法的,将p所指向的int型变量的值设置为q所指向的int型变量的值;
- C. a = *q; 是合法的,将a变量的值设置为q所指向的int型变量的值;
- D. p = q; 是合法的,将p指向变量a的地址;
- A. q = a; 是非法的,因为q是一个int型指针,而a是一个int型变量,它们的类型不匹配,不能进行赋值操作。
因此,选项A是非法的赋值语句。