作业帮 > 数学 > 作业

下列语句定义pf为指向float类型变量f的指针,__B___是正确的.B.float f,*pf = &f;

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/15 14:43:24
下列语句定义pf为指向float类型变量f的指针,__B___是正确的.B.float f,*pf = &f;
下列语句定义pf为指向float类型变量f的指针,__B___是正确的.
A.float f,*pf = f; B.float f,*pf = &f;
C.float *pf = &f,f; D.float f,*pf =0.0;
为什么不是A?定义pf为指向float类型变量f的指针,不就是说pf=&f,则*pf=f呀.
你把赋值和定义搞混掉了.
float f, *pf = f;的含义同赋值语句*pf = f不同,;而是相当于
float f, *pf;
pf = f;
pf被初始化指向地址值为f的指针,而地址值不可能是float的,这不合语法,所以出错.
即便float f, *pf = f这里的"="等同于赋值语句的语义,这也是错误的.因为pf没有初始化就被使用了,这会导致程序崩溃.当然,这只是针对你的理解的分析,实际上直接语法错误,编译通不过.
再问: 答案B.float f, *pf = &f;为什么是正”确的? *pf = &f 不是指取f的地址,然后赋给地址pf里的值吗?把地址赋给值?我以为pf = &f才是对的,地址赋给地址,门当户对。。。 我C语言学得不好,
再答: “*pf = &f 不是指取f的地址,然后赋给地址pf里的值吗?把地址赋给值?” 没错。 “我以为pf = &f才是对的,地址赋给地址,门当户对。。。” pf = &f在赋值语句时用是对的。但这里不是赋值,而是在定义时初始化,语法含义不同。定义时这样用就是错的了。你可以这样理初始化的是pf, 不是*pf。 定义时初始化float *pf = &f;的等价的语句是: float *pf; pf = &f;