几道C语言指针方面的问题

针对每道题的具体疑问见每题后边的括号,万分感谢!
1.以下定义语句中正确的是()正确答案:C
A)char a='A'b='B'; B)float a=b=10.0;
C)int a=10,*b=&a; D)float *a,b=&a;
(书上说指针的定义形式是int *a,可是为什么这题选C不选D呢?)
2.有以下定义语句:double r=99,*p=&r;*p=r; 则以下正确的叙述是()
A)以上两处的*p含义相同,都说明给指针变量P赋值
B) 在“double r=99,*p=&r;”中,把r的地址赋值给了P所指的存储单元
C)语句“*p=r"把变量r的值付给指针变量P
D)语句"*p=r;"取变量r的值放回r中
(我不知道本题的正确答案,选B对吗?如果不对请详细解释一下)
3.若int a=511,*b=&a;则printf("%d\n",*b);的输出结果是()
A)无确定值 B)a的地址 C)512 D)511
(我不知道本题的正确答案,选D对吗?如果不对请详细解释一下)
4.设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是()(正确答案:A)
A)scanf('%d,pa); B)scanf('%d,a); C)scanf('%d,&pa); D)scanf('%d,*pa);
(为什么不选D?)
5.有以下定义和赋值:int *p,*q, i=1,j=0; p=&i; q=&j;对以下的赋值语句,叙述中错误的是()(正确答案:C)
A)*p=*q;等同于i=j;
B)*p=*q;;是把q所指变量中的值付给p所指的变量
C)*p=*q;将改变p中的值
D)*p=*q;将改变q中的值
6.若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是()(正确答案:D)
A)int *i=NULL;
scanf("%d",i);
B) float *f=NULL;
*f=10.5;
C) char t='m', *c=&t;
*c=&t;
D) long *L;
L='\0';
麻烦大家解释得再详细些,我是个初学者,“尾芝”和“一颗坚强的草”的回答不够详细,我看不懂,最好每道题四个选项都说一下,万分感谢!

楼主你好!!

1. int *a;表示声明一个指针变量a,注意a的值是个地址,不是值,这样才表示一个值(前提是a确实指向一个值,不然的话,会是一个随机数):*a,
int a=10,*b=&a;表示的是把a的地址给指针变量b。
2.B,其中D是错的,因为楼主只是声明一个指针变量,你没有初始化,也就是没有分配内存,要是楼主直接int double r=99,*p;*p=r;虽然编译不会出错,但是
连接会出错,因为既然P没有分配空间,怎么能把值r放到里面的,要是改成这样:int *p=new int,r=99;*p=r就可以了。
3.D,printf("%d\n",*b);输入的值,printf("%d\n",b);输出的是地址。
4.scanf('%d,pa); 其中pa是个地址,格式要求就得是地址,也可以表示为scanf('%d,&a);
5.C 是对的,原因是*p=*q,表示的是*p=j。此时i的值也改变了,等于j;
6.选项A,既然指针变量已经为NULL,怎么还可输入呢??
B,同上
c:char t='m', *c=&t;*c=&t;改为:char t='m', *c=&t;c=&t;就对了,因为前面的‘*’说明p是个指针变量,下面就不要带*

要是楼主再不懂的话,在线交谈!!!!!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-18
1.b是浮点数,不能把a的地址值赋给b
2.D
3.D *b:b所指向的变量的值
4.A 因为scanf中是给出变量的地址,而*pa是变量的值。。。
5.C p指向j,p中存放的是j变量所在的地址值
6.D A)空指针NULL--指向地址为0的内存单元(系统使用的单元,不允许向该单元赋值),所以不能向i指向的单元赋值
B)原因同A
C)第二个*c是指char型变量,不能把地址值赋给它
第2个回答  2010-08-18
(1)D要改成float *a,*b=&a;就对了
(2)错误的重定义指针p,题目是错的
(3)D
(4)scanf("%d",&a); 这里跟的是地址&a
(5)(6)不知道你的疑问

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网