OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3480|回复: 1

[问题] 关于指针类型的数据变量是怎样存储的问题

[复制链接]

3

主题

5

帖子

0

精华

初级会员

Rank: 2

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

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-6-22 21:31:37 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 10:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表