初级会员
- 积分
- 95
- 金钱
- 95
- 注册时间
- 2016-3-27
- 在线时间
- 12 小时
|
1金钱
首先,学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变量
总之都没成功,有没有大神能从理论的角度给我解释下,我自己的分析是编译器的问题,可能编译器并不具有这个功能,或者哪里有了问题(楼主不是学软件的 所以不要让我自己写编译器 ),按照汇编语言的思路来讲,都是一堆二进制数,不管多少位,我把它当地址用就是地址,把他当数据用就是数据~所以我觉得我的理论还是没问题的。
总结一下:我的想法就是 定义一个数据 把他当做地址用,这样是可以的~大神可以随意发言 别乱喷我~
|
|