若有说明:int n=2,*p=&n,*q=p;
来源:百度知道 编辑:UC知道 时间:2024/09/20 08:54:40
则以下非法的赋值语句是(D)
A)p=q;
B) *p=*q;
C) n=*q;
D) p=n;
答案是D,我想请问一下其他的为什么不对,例如B。谢谢。
A)p=q;
B) *p=*q;
C) n=*q;
D) p=n;
答案是D,我想请问一下其他的为什么不对,例如B。谢谢。
A B C都是对的
A p=q P和Q都为指针变量,让p指向q的地址
B *p = *q 让p指向地址的值 等于q指向地址的值 *取值符号
C n=*q;
D p=n 不能这样写,p是指针变量,是代表地址,而n是值 写成p=&n就对了
以下依次解释ABC:
A)因为p和q是同一类型的(都是int*型),所以可以把q赋值给p;
B)*号是取 指针所指向的存储单元 的符号,p和q都指向n,所以*p相当于n,*q也相当于n,那么这条语句就相当于n=n;,所以也没问题。
C)同上,这条语句相当于n=n,所以也正确。
而D中等号两边的类型不同,不能相互赋值,所以错了
A是两个指针变量之间的赋值,正确
B是两个指针变量所指向的内存单元之间的赋值,正确
C是一个整型变量和一个整型指针的解引用之间的赋值,正确
D是一个整型变量和一个整型指针的赋值,C语言不允许直接用整型变量给指针赋值,不正确。
若有说明:int n=2,*p=&n,*q=p;则以下非法的赋值语句是 a) *p=q; b) p=n;
若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是______。
若有说明int *p,m=5,n;下面正确的程序段是?
若int *p,m=5,n;正确的是( )
int *p=&a;和 int *p; *p=a;和 int *p; p=&a;有区别么?
int i,*p=&i;是正确的C说明 ?
若有定义:int *p[4]; 则标识符p【 】.
int *p, m=5, n; A p=&n; scanf("%d", *p); B scanf("%d", &n); p=n; C p=&n; *p=m;
const int *p和 int const *p有区别?
"int x y=0,z,*p[3];p[0]=&y;p[1]=&y;p[2]=&z;",以下表达式有语法错误的是