int *p,k=10; double *q,f=5.6; p=&k;q=&f; 执行语句p=(int *)q;后,*p的值是()A)一个整数 B)5 C)6 D)10====参考答案是A,求详细解释
6条回答 默认 最新
- lzslywl 2015-11-29 00:48关注
q一开始是指向double类型的变量,然后强转为指向int类型的指针并赋值给p,虽然强转了,但是q依然指向存储double类型5.6的8个字节的内存区域的起始地址,然后p也指向这段内存,然后对p进行取值,因为p是int类型,所以*p就取得了这段内存的前面四个字节的内容,double类型的机内表示你懂的,其实*p取得的是“垃圾值”。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 划分vlan后不通了
- ¥15 GDI处理通道视频时总是带有白色锯齿
- ¥20 用雷电模拟器安装百达屋apk一直闪退
- ¥15 算能科技20240506咨询(拒绝大模型回答)
- ¥15 自适应 AR 模型 参数估计Matlab程序
- ¥100 角动量包络面如何用MATLAB绘制
- ¥15 merge函数占用内存过大
- ¥15 使用EMD去噪处理RML2016数据集时候的原理
- ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
- ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数