下面我结合自己学习C语言的过程通过自己用C语言编写单片机程序的经验来谈谈我对C语言的指针理解和简单的应用。我们利用C语言编写程序时当遇到数组、字符串以及内存的动态分配等问题时,我们这时要用指针的话往往能达到简化程序快速处理各种数据。从这方面我们可以看到指针能为程序中的各种数据的传递提供了很快捷的方法。

其实指针就像汇编语言中的寄存器间接寻址一样,我们访问的地址不是寄存器中的数据,而是访问的是寄存器的地址。我们打个比方,我们把整个内存比作一栋大楼,内存中的寄存器就好像大楼中的每个房间,为了方便寻找房间我们都把房间按一定规律编号,同样我们也把内存中的寄存器编好号,当我们要到大楼里找人的时候,我们不是直接找人而是找这个人所居住的房间号,只要把房间号找到了,那么人就自然而然地找到了。那么同理计算机要寻找去处理某个数据不是直接去寻找这个具体的数据而是去寻找存储这个数据的地址。找到了存储这个数据的地址那么这个数据也就找到了。

C语言指针变量地址的理解

因此我们就把这个存储数据的地址称之为变量的地址,因为这个存储器里存储的是一个变量,就像大楼房间里的人一样,房间里的人也是经常会变的,今天这个房间住的是张三明天李四又住进去了,所以我们把存储变量的地址就叫变量的地址。比如有个变量我们用X表示,假如它存储在0X01这个地址单元中,我们要取出这个变量的地址用语言表达式为&X。

C语言指针变量地址的理解

对C语言中指针变量的理解

我们知道了如何取变量的地址了,那么下面就是如何把这个变量的地址给予谁的问题了,这时候我们又要引出一个“概念”。这个“概念”名词叫指针变量。这时我们可以定义一个指针变量P,我们如果把X这个变量的地址要赋给指针变量的话,可以这样表达:P=&X。为了明确这个变量不是一般的变量,我们要给这个指针变量加个“标签”用*P表示。这个标签就像“身份证”一样,一但加上就说明这个变量不是一个一般的变量了,我们用语言表达为:*P=&X。当然既然都是变量那么我们在使用这些变量时先要给它们定义属性。也就是它们属于哪一类“人员”。

C语言指针的简单应用举例

以上就是我对C语言中的指针这个知识点的理解,下面我们举个“栗子”来说明指针是如何应用的,下面我们用C语言指针来编写一个单片机流水灯的小程序。如下图说表示的。

C语言指针变量地址的理解

程序中传 递的是 buf 的地址,把这个地址值直接传递给函数 ShiftLeft 的形参指针变量 p,也就是 p 指 向了 buf。从小程序中可以看出我们传递的是指 针,不仅仅我们的子函数可以使用 buf 里边的值,而且还可以对 buf 里边的值进行改变。 此外再在说一句,只要是*p 前边带了变量类型如 unsignedchar,就是表示定义了一个指 针变量 p,程序中的*p,是指 p 所指向的内容。