完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
首先,学c语言的都知道,不同的变量都有不同的存储方式,而对于一组数据,比如说一个32位数据,编译器按照不同的声明方式 ,这个32位数据都会不同的值,比如整形可能就是一个1735195650什么的数,而float可能就是3.14这样的数,char类型可能就是abcd什么的,这里我就有一个问题就是,我们都知道地址变量,也就是指针变量,我们定义一个指针如 int *a=&b;这样的定义然后把a的值和*a的值都输出,这时候printf输出的a就是一串数,十进制的,而*a就是b的值,这时候我有个疑问,这个指针变量是以什么形式保存,或者说所有变量类型,我们可不可以以十进制直接保存,然后让他以指针变量的存储方式工作,我是这么写的
long adder=17565676;(这是一个地址 瞎写的 不同电脑不同值随机的) int b=1; *(int *)adder=b; 这里都没有问题 但是输出printf一致报错 我感觉是long有自己的定义方式 然后我用立即数代替adder变量 总之都没成功,有没有大神能从理论的角度给我解释下,我自己的分析是编译器的问题,可能编译器并不具有这个功能,或者哪里有了问题(楼主不是学软件的 所以不要让我自己写编译器 ),按照汇编语言的思路来讲,都是一堆二进制数,不管多少位,我把它当地址用就是地址,把他当数据用就是数据~所以我觉得我的理论还是没问题的。 总结一下:我的想法就是 定义一个数据 把他当做地址用,这样是可以的~大神可以随意发言 别乱喷我~ |
|
相关推荐
1个回答
|
|
根据报错修改即可。
|
|
|
|
只有小组成员才能发言,加入小组>>
请问下图大疆lightbridge2遥控器主板电源芯片型号是什么?
4442 浏览 1 评论
使用常见的二极管、三极管和mos做MCU和模组的电平转换电路,但是模组和MCU无法正常通信,为什么?
312浏览 2评论
为了提高USIM卡电路的可靠性和稳定性,在电路设计中须注意的点有哪些?
297浏览 2评论
311浏览 2评论
314浏览 2评论
352浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 00:06 , Processed in 0.881374 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号