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

9.3.1指向char和int的指针_实例0

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

视频教程👇 

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

实例0

步骤一

编译:

gcc -m32 -o pointer_test pointer_test.c


运行:

./pointer_test


结果:

从运行的结果我们可知,变量c的地址编号(即地址)是0xffaaa2b7,指针变量pc的地址编号是0xffaaa2b8,如下图所示,编译成32位的机器码,字符类型占用一个字节,指针类型就是用4个字节来存储的。

Chapter9 lesson3 002.jpg

步骤二

我们把test0()函数里面的变量保存(赋予)一些值,假如这些变量不保存数据的话,那么存储该变量的地址空间就会白白浪费,就相当于买个房子不住,就会白白浪费掉。


我们把上面程序中的test0()函数里面的字符变量c,指针变量pc进行赋值。

c  = ‘A’;  //把字符‘A’赋值给字符变量c 

pc = &c;  //把字符变量c的地址赋值给指针变量pc


然后把赋值后变量的值打印出来

printf("c  =%c\n",c); 

printf("pc =%p\n",pc)


编译:

gcc -m32 -o pointer_test pointer_test.c


运行:

./pointer_test


结果: 

从运行的结构来看字符变量和指针变量的地址编号发成了变化,所以在程序重新运行时,变量的地址,具有不确定性,字符变量c存储的内容是字符‘A’,指针变量pc存储的内容是0xffb009b7(用四个字节来存储)。

由于内存的存储方式是,小端模式:低字节的数据放在低地址,高字节的数据放在高地址。在内存中的存储格式如下图所示。

Chapter9 lesson3 003.jpg

步骤三

我们辛辛苦苦定义的指针类型变量,我们要把他用起来了,下面我们来分析一下,用指针来取值,‘*’:表示取指针变量存储地址的数据。

我们在test0()函数里面添加如下代码: 

printf("*pc =%c\n",*pc);

printf("//=================\n");


编译:

gcc -m32 -o pointer_test pointer_test.c


运行:

./pointer_test


结果: 

指针变量pc存储的内容是是字符变量c的地址,所以*pc就想相当于取字符变量c的内容。如图

Chapter9 lesson3 004.jpg


视频教程👇 

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


9.3.1指向char和int的指针_实例0的评论 (共 条)

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