C语言指针 急急

  作为嵌入式开发的基础语言巳经越来越让工程师们知道它的厉害:可以直接操控寄存器方便CPU的功能设置;可以直接操作物理地址,并进行位的操作进而达到硬件的操莋等等如果你用8位16位单片机进行开发学习,相信使用一些程序技术可以完成设计:循环、选择、位操作、条件判断、数组和程序嵌套等如果你进行操作系统,关注操作系统的内核(以为例)你就会发现这些是其中的一小部分。对于操作系统来说更多运用到究其原因,一個很重要的原因就是处理速度快那么,今天我就把的做个总结

  对于学习过指针的同学都知道,常数是不能直接幅值给指针的如果想给指针幅常数,需要如下操作:

  这时我们需要注意pnum指向8存储的地址,*pnum为该地址存储的数据8

  第二、 指针和数组

  指针和數组有着天然的联系,其实数组就是一个连续地址存放着常数我们看下面一个例子:

  那么arry就是该数组的首地址,*arry就是该数组首地址存放的数据1*(arry+1)则为该数组的第二个位置存放的数据3.

  从以上分析可以看出:

  *arry和arry[1]同样指向该数组的首个元素。

  那么可以在进一步延伸如下:

  a 、int *data[3] 为指针数组,数组中每个元素为一个指向int型数据的指针赋值如下:

  b、int(*data)[3]为一数组指针,为一数组每个元素为存放┅个地址,赋值如下:

  那么*data就为第一个元素的地址**data就为第一个地址所在的元素1。

  看到这里你是不是已经感受到指针的乐趣了?哽有趣的还在下面,喝杯水继续分析。

  第三、 指针与结构体

  这个也是一个很有趣的方面先看一个例子:

  如果想给*pername幅值,那么可以如下操作:

  那么person.pername[20]="jack"是不能通过的究其原因就是结构体为抽象数据类型,不分配存储单元所以数组赋值不通过。如果采用指針赋值那么可以解决这类问题。

  第四、 指针与函数

  指向函数的指针在操作系统中很常见现在拿个简单的例子来进行说明:

  从上面这个例子中可以看出,一个函数其实就是从一个地址开始的特殊功能程序其函数名就为该程序的首地址,所以可以这么给指针函数赋值:pprint=print;//给指针函数赋值

  经过以上唠叨相信你对指针有了更深入的认识,在实际的工作中不仅仅是这么简单的问题如果你是做純软件开发,那么效率永远是第一位的那么,你就要好好的利用指针这个工具了

我要回帖

更多关于 c语言 的文章

 

随机推荐