欢迎光临散文网 会员登陆 & 注册

9.3C语言指针复习_指向char和int的指针

2020-08-17 10:50 作者:韦东山  | 我要投稿


视频教程👇 

韦东山升级版全系列嵌入式免费视频_快速入门篇

日常中,我们把笔记写到记事本中,记事本就相当于一个载体(存储笔记的内容)。
C语言中有些变量,例如,char、int类型的变量,它们也需要一个载体,来存储这些变量的值,这个载体就是内存。
比如我们的电脑内存有4GB内存,也就是4*1024*1024*1024=4294967296字节。

我们可以把整个内存想象成一串连续格子,每个格子(字节)都可以放入一个数据,如下图所示。

Chapter9 lesson3 001.jpg

每一个小格子都有一个编号,小格子的编号从0开始,我们可以通过读取格子的编号,得到格子里面的内容。同理,我们根据内存的变量的地址,来获得其中的数据。
下面写个小程序进行测试,实例: 

point_test.c 

根据程序可以看出来,函数的功能是输出,char,int,char **类型所占据的字节数;


编译:

gcc -o pointer_test pointer_test.c


运行应用程序:

./pointer_test


结果:(我用的是64位的编译器) 

可以看出在64位的机器中,用8个字节表示指针,我们可以测试一下用32位的机器编译


编译:

gcc -m32 -o pointer_test pointer_test.c   //加上-m32:编译成32位的机器码


编译可能会出现下面提示错误:

/usr/include/features.h:374:25: fatal error: sys/cdefs.h: No such file or directory


解决错误,安装lib32readline-gplv2-dev,执行:

sudo apt-get install lib32readline-gplv2-dev


重新编译:

gcc -m32 -o pointer_test pointer_test.c    //没有错误


运行生成的应用程序:

./pointer_test


结果: 

可以看出编译成32位的机器码,指针就是用4个字节来存储的,

总结:

1. 所用变量不论是普通变量(char,int)还是指针变量,都存在内存中。

2. 所用变量都可以保存某些值。

3. 怎么使用指针?

取值

移动指针 


视频教程👇 

韦东山升级版全系列嵌入式免费视频_快速入门篇


9.3C语言指针复习_指向char和int的指针的评论 (共 条)

分享到微博请遵守国家法律