中易网

C语言面试题 绝对地址赋值问题

答案:3  悬赏:70  
解决时间 2021-03-01 07:44
,对0x67A9绝对地址赋值. 如下貌似是标准答案.我的理解是ptr肯定是一个地址,并且地址的值是0x67A9.

int *ptr;
ptr = (int *)0x67a9;
*ptr = 0xaa55;

问题是, 为什么0x67A9前面还要加(int *).

我觉得ptr = int 0xaa55;不就可以了吗?

原来有开贴过,不小点错按钮,实际还是没结局,求高人解释....
原地址:http://wenwen.sogou.com/z/q742660565.htm?sort=6#answer-1627974948
最佳答案
因为ptr是 int * 类型的。表示指向int型数据的一个指针。
ptr = (int *)0x67a9 表示将0x67a9强制转换成存放int型数据的地址,再把这个地址赋值给ptr。
()里加数据类型是强制转换类型的意思

ptr = int 0xaa55;
这个写法应该是不合法的
即使改成 ptr =( int )0xaa55; 也不对,因为左边是地址,右边是int型数据。数据类型不对等。

可以改成 * ptr = (int) 0xaa55;就对了,,这样两边数据类型对等,都是一个int型的数值了
全部回答
你说的很对,完全正确。看来你对基础概念理解的很透。类型转换的结果不是左值,因此不能够被赋值。 不妨说一下“左值”的概念。简单说就是语法上能够放在赋值表达式的左边的表达式对象,左值表达式都有唯一确切的类型和内容的内存对象。变量名、结构成员、数组元素、指针等可以作为左值。只有左值能被赋值,具有const属性不可以被赋值。
如果直接ptr=0xaa55,由于0xaa55是个整数常量,类型不匹配(事实上无法编译)。 所以要强制转换成匹配的类型,告诉编译器,0xaa55是个整数变量的地址。 另外你后面的代码 *ptr=0xaa55;是错误的,是将0xaa55保存到ptr的值所指向的地址,而ptr的值未初始化,里面的地址是不确定的,会引起程序崩溃。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
平阳县农商银行ATM地址有知道的么?有点事想
以前写作文时在外貌描写方面总是喜欢用一些千
请问滋肾丸怎么吃,每天吃多少粒?谢谢!
育新花园(东门)我想知道这个在什么地方
蓝月亮的产品有哪些?
芜湖钢材市场地址在什么地方,想过去办事
请问周易大师此八字用神喜神忌神是什么?十分
桌面上如何将WinRAR archiver的打开方式图标
金手指5年级下册答案语文
金威大酒店地址有知道的么?有点事想过去
在烟台刮腻子一般多少钱一平啊,不包料的
喜欢一个女孩是不是要使劲追啊?要怎样使劲追
计算:(A的平方-2+A的负2次方)÷(A的平方-
皇星蛋糕德宏路口店地址在哪,我要去那里办事
第三方支付平台属于一种比较小众的交易担保方
推荐资讯
知道对方qq账号密码,怎么查对方qq关联过的qq
view;scene;scenery;sight区别
三星手机锁屏解不开了怎么办
女人宣言丝滑水怎么使用?
海安县海安镇田庄幼儿园这个地址在什么地方,
重庆的本科大学那些美术专业好
超伟便利店这个地址在什么地方,我要处理点事
我和喜羊羊的故事作文400字
刘德华和吴孟达演过电影
大神求助,我要用WPS EXCEL表格只打印填写的
坤源酒店怎么去啊,有知道地址的么
眠っている还有别的类似的情况,为什么加っ
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?