设已有定义:float x;,则下列对指针变量 p 进行定义且赋初值的语句中正确的是 ( )。

A)float *p=1024; B)int *p=(float)x
C)float p=&x; D)float *p=&x;
答案是D啊,我觉得D不对啊,应该是C吧,&X不是代表地址吗,*P是一个值啊,怎么会相等呢

正确答案选择D,“float *p=&x;”,因为x是一个float型的变量,所以说要定义一个float型的指针变量来存储x变量的地址,所以说选项D直接排除。然后C选项也可以排除,因为C选项定义的是变量,不是指针变量。

A和D选项都是指针变量,但是A选项不能作为正确的语句,不能把一个常数赋值给指针变量,所以说A是不正确,根据排除法得出D是对的,因为它定义了一个指针变量p来存放x的地址,所以说选择答案D。

扩展资料:

指针使用注意事项:

1、不允许把一个数赋予指针变量。

2、改变形参不代表改变实参。

3、分析函数指针变量不能进行算术运算,这是与数组指针变量不同的。数组指针变量加减一个整数可使指针移动指向后面或前面的数组元素,而函数指针的移动是毫无意义的。

函数调用中“(*指针变量名)”的两边的括号不可少,其中的“*”不应该理解为求值运算,在此处只是一种表示符号。要把“z=*pomax(x,y);”改成“z=(*pomax)(x,y);”。

C语言中指 针初始化是指 给所定义的指 针变量赋初值。 指针变量在被创建后, 如果不被赋值, 他的缺省值是随机的 ,它的指向是不明确的, 这样的指针形象地称为“野指针”。

野指针是很危险的, 容易造成程序出错, 且程序本身无法判断指针指向是否合法。

指针变量初始化时避免野指针的方法: 可以在指针定义后, 赋值NULL空值。

参考资料来源:百度百科-指针

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-24
首先告诉你个坏消息 D 是正确的 &这个是取地址符 &x; 这样呢就拿到了变量x的地址了
地址要用什么变量来存呢 那就是指针了 指针的声明 类型 * 变量名 ;
因为x 是float类型 那么指针也要是 float * 类型 所以 可以存float变量地址的编译不会出警告和错误的只有 D 了
看你的说明 感觉你可能理解错了 float *p = &x; 指针的定义和初始化
*p 使用指针 这时*p 就代表了 x 变量 所以一定要分清 定义 和 定义后使用 用的* 号意义是不一样的
而C 选项只是一个 普通的 float 变量 是存储单精度小数的本回答被提问者采纳
第2个回答  2011-07-20
float p只是定义了一个浮点数,并不是指针啊
对于A中,要对1024进行强制类型转换(float*)1024,当然如果你不能保证这个地址有意义,这样做很危险
B中,指针用地址来初始化,显然用浮点数X是不对的,通过如上述的类型转换就可以了,或者直接象D中用&x,前提是前后类型要一致

注意*的使用,在定义的时候只是起到类型说明的作用,并不是取值
第3个回答  2011-07-20
....C肯定不正确(声明定义初始化,是不同的概念)
float p定义的是一个浮点型变量,&x是地址
float p = &x;
等同于
float p;
p = &x;
float *p是一个定义指针,将初始为x的地址
float *p = &x;
等同于
float *p;
p = &x;
第4个回答  2011-07-21
1.指针变量的值是一个地址,就这一点来说它是一个16位或32位的整数。但指针的类型与其值无关,只与其指向的变量类型相关。
2.我没看明白,还是你没说清楚
3.s是指针,指向字符c,即s的值是c的地址
4.3e是16进制的62,e是十进制14
5.'\x10','xa','x8' 是3个16进制表示的字符,ACSII表上可以查到,其中'xa'是换行
另外,站长团上有产品团购,便宜有保证