首页 > 试题广场 >

若已有定义:float x;,则下列对指针变量p进行定义且

[单选题]

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

  • float *p=1024;
  • int *p=(float)x;
  • float p=&x;
  • float *p=&x;

选项A将指针p赋值为1024,也就是指向地址位1024的一个浮点数,但没有对其赋值

发表于 2020-02-26 20:32:28 回复(0)
首先不可以为指针变量赋值常量,虽然有时可以编译通过(因为指针就是用来存放地址的,这个地址就是个常数,但是,人为添加执行会出错!因为指针本来是存放地址的,而你却存放了一个常数(即一个不合法的地址),这样就会使指针指向不确定的内存单元(非法访问),从而出现错误!)
其次不可以为整形指针赋值浮点值,虽然可以强制转换,但是因为二者在内存中存放的形式不同,所以会报错。
最后不可以为float型变量赋值指针,除非有明确的类型转换
发表于 2021-11-14 19:45:58 回复(0)
float *p; p=&x;
发表于 2019-10-21 10:42:25 回复(0)
D
指针变量允许边定义(为float *型)边赋初值(变量的地址)。
发表于 2017-10-11 13:31:06 回复(0)
选D。   
  float *p=&x; 
  p是指向float型的指针,此处为它赋值为x(float型)的地址.
A错在为指针变量赋值常量.
B错在为整型指针赋值一个float量.
C错在为一个float型变量赋值一个指针.
编辑于 2020-07-12 15:25:53 回复(1)
选D
指针p应该指向x的地址,所以加上&
发表于 2016-11-30 23:21:32 回复(0)
c错在哪里啊?新生😅😅😅
发表于 2023-11-24 19:11:34 回复(1)
首先不可以为指针变量赋值常量,虽然有时可以编译通过(因为指针就是用来存放地址的,这个地址就是个常数,但是,人为添加执行会出错!因为指针本来是存放地址的,而你却存放了一个常数(即一个不合法的地址),这样就会使指针指向不确定的内存单元(非法访问),从而出现错误!)
其次不可以为整形指针赋值浮点值,虽然可以强制转换,但是因为二者在内存中存放的形式不同,所以会报错。
最后不可以为float型变量赋值指针,除非有明确的类型转
发表于 2022-05-15 14:27:30 回复(0)
选择D。
很明显,float *p = &x;指针赋的是地址,注意加上&。
编辑于 2021-11-08 21:28:41 回复(0)
选项A为什么不对,请大神指点
发表于 2020-04-17 09:52:39 回复(1)