设有定义: int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是( )A*p=*q;
2个回答
展开全部
诚心求最佳答案,尽力回答,欢迎最问
题目中定义将逗号拆开详写:
int n1 = 0; //n1 的初始值为 0
int n2; //n2 声明
int *p; //声明一个int型 的指针p
p = &n2; //指针p 指向 n2的地址
int *q; //声明一个 int型的指针q
q = &n1; //指针q 指向 n1的地址
赋值语句
n2 = n1; // 将等号右边n1的值 0,赋给等号左边n2
选项:
A *p = *q; //将指针q指向的地址里的值(即n1的值),赋给指针p指向的地址里(n2)
B p = q; //p 和 q 分别存放n1、n2变量地址的,该地址是由系统分配的,不能赋值
C *p = &n1; // *p 是指针p指向的地址里的值,&n1是n1的地址,不能赋值
D p = *q; //p 存放的是n2的地址, *q是指针q指向的地址里的值,不能赋值
题目中定义将逗号拆开详写:
int n1 = 0; //n1 的初始值为 0
int n2; //n2 声明
int *p; //声明一个int型 的指针p
p = &n2; //指针p 指向 n2的地址
int *q; //声明一个 int型的指针q
q = &n1; //指针q 指向 n1的地址
赋值语句
n2 = n1; // 将等号右边n1的值 0,赋给等号左边n2
选项:
A *p = *q; //将指针q指向的地址里的值(即n1的值),赋给指针p指向的地址里(n2)
B p = q; //p 和 q 分别存放n1、n2变量地址的,该地址是由系统分配的,不能赋值
C *p = &n1; // *p 是指针p指向的地址里的值,&n1是n1的地址,不能赋值
D p = *q; //p 存放的是n2的地址, *q是指针q指向的地址里的值,不能赋值
追问
谢谢你的解答,能不能在帮我看最后一题,拜托..呵呵...有以下程序#include main ( ){ int n,*p=NULL;*P=&n;printf("input n:");scanf("%d",&p);printf("output n:");printf("%d\n",p);}改程序试图通过指针P为变量n读入数据并输出,但程序有多出错误,以下语句正确的是( )A int n,*p=NULL;B *p=&n; C scanf ("%d",&p)D printf("%d\n",p);答案是A,但我不知道原因
追答
A int n, *p = NULL; //声明变量n,声明指针p,指针p的初始值为NULL(指针p指向的地址为空)
是对的。
B 错的原因上题有
C 错,是因为scanf ("%d",p); 而不是&p,p就是存放的是n的地址(即&n意思)
D 错,其实原因上题也有,printf("%d",*p);才是对的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询