题目
11.(判断题)如有变量的定义int *r;double x;则语句r=8&x;是合法的。A. 对B. 错
11.(判断题)如有变量的定义int *r;double x;则语句r=8&x;是合法的。
A. 对
B. 错
题目解答
答案
B. 错
解析
考查要点:本题主要考查指针类型的兼容性及赋值规则。
解题核心:明确指针变量的类型必须与所指对象的类型一致或兼容。
关键点:
-
int *r是指向int类型的指针,&x是double类型变量的地址,其类型为double*。 -
不同类型的指针之间不能直接赋值,除非使用显式的类型转换(如
r = (int*)&x;)。 -
未加转换的赋值会导致类型不匹配,属于非法操作。
-
指针类型分析
int *r:r是指向int类型的指针。double x:x是double类型变量,&x是其地址,类型为double*。
-
赋值操作的合法性
- 直接赋值:
r = &x;将double*类型赋值给int*类型指针,类型不匹配,编译器会报错。 - 合法方式:需通过强制类型转换(如
r = (int*)&x;),但可能导致数据解释错误(如int和double的存储大小不同)。
- 直接赋值:
-
结论
未加类型转换的赋值操作r = &x;是非法的,因此答案为B. 错。