若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是 A 。 A. q=a; B.*p=*q; C.a=*q; D.p=q;
时间: 2024-02-09 16:07:23 浏览: 49
答案是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是非法的赋值语句。
相关问题
若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是()。 A. n=*q; B. p=n; C. p=q; D. *p=*q;
选项 B. p=n; 是非法的赋值语句。
在给指针变量赋值时,需要注意指针类型和被赋值的类型必须匹配。根据这个条件,选项 A、C 和 D 都是合法的语句。
- A. n=*q;:将指针 q 指向的内存地址中的值赋给变量 n,这是合法的操作。
- C. p=q;:将指针 q 的值赋给指针 p,它们都是指向同一内存地址的指针,这是合法的操作。
- D. *p=*q;:将指针 q 指向的内存地址中的值赋给指针 p 指向的内存地址中的值,这也是合法的操作。
选项 B. p=n; 中,n 是一个整型变量,而 p 是一个整型指针变量,它们的类型不匹配。因此,这是非法的赋值语句。
设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是______。 A *p=*q; B p=q; C *p=&n1; D p=*q;
与`n2=n1;`语句等价的是`*p=*q;`语句。
`*p`表示指针p指向的变量的值,`*q`表示指针q指向的变量的值,因为`q=&n1`,所以`*q`就是n1的值,因为`p=&n2`,所以`*p`就是n2的值,所以`*p=*q`就相当于`n2=n1`。
其余选项的意义如下:
- A *p=*q; 表示将指针q指向的变量的值赋值给指针p指向的变量。
- B p=q; 表示将指针q的值赋值给指针p。
- C *p=&n1; 表示将指针p指向n1的地址。
- D p=*q; 表示将指针q指向的变量的值赋值给指针p。