设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是( )A*p=*

问题描述:

设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是( )A*p=*q;
B p=q; C *p=&n1; D p=*q;请大家解答时最好说下过程,我基础不是很扎实
1个回答 分类:综合 2014-10-04

问题解答:

我来补答
尽力回答,欢迎最问
题目中定义将逗号拆开详写:
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);才是对的
 
 
展开全文阅读
剩余:2000
也许感兴趣的知识