几道C语言指针方面的问题
发布网友
发布时间:2023-07-27 03:43
我来回答
共3个回答
热心网友
时间:2024-01-27 20:18
楼主你好!!
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是个指针变量,下面就不要带*
要是楼主再不懂的话,在线交谈!!!!!
热心网友
时间:2024-01-27 20: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型变量,不能把地址值赋给它
热心网友
时间:2024-01-27 20:19
(1)D要改成float *a,*b=&a;就对了
(2)错误的重定义指针p,题目是错的
(3)D
(4)scanf("%d",&a); 这里跟的是地址&a
(5)(6)不知道你的疑问