指针是什么

来源:互联网 发布:长虹电视机总线数据 编辑:程序博客网 时间:2024/06/07 15:12

1.C编程语言变量

1.1 C编程语言内置变量类型

(1)基本类型(2)构造类型(3)指针类型(4)空类型

1.2 编译器如何解释变量

    每一个变量都必须有类型;只有知道这个变量是什么类型的,编译器才知道如何为用户定义的变量分配内存空间,才知道如何对分配给某个变量的内存空间进行解释。指针它也不例外。指针它就是一种C编程语言中的内置变量类型。编译器为整型变量分配4个字节大小的的内存,按照整型数据的性质,可以对已分配的这块内存执行一些操作。比如赋值,取值,加减乘除等。我们可以看到,变量无非数据加在该数据上的某些操作而已。如果操作是编译器未曾定义的,那么该操作就是违法的。说道这里可能有些远了,其实不然。指针作为内置变量类型,允许程序向编译器定义某个指针变量,允许程序员对指针变量进行一些操作,比如加减。我们知道整型变量存储整型数据,字符型变量存储字符型数据,而指针呢?指针里面存储的数据有些特殊,它存储某个变量的在内存空间中的地址,即存储一个32的整数,当编译器遇到指针型变量时,就把它存储的数据解释为一个地址,到该地址去取出数据内容,而不是直接把地址取出。

    如何一个指针存储了一个字符型变量的地址,那么我们就需要通知编译器,我们定义了一指针,它的数据内容是一个字符型变量的地址,即该指针指向一个字符型变量;同理,我们还可以定义其他类型的指针,比如整型、浮点型等。

    不管定义了一个怎么样类型的指针,只需要牢牢记住它归根到底是一个变量,一个指针变量而已。函数指针,它是一个指针变量,它指向一个函数开始的地方;数组指针,它是一个指针,它指向一块连续的内存。

2. C编程语言变量之指针变量

2.1 一级指针

一级指针是最常用的。

(1)基本类型指针

整型指针、字符型指针、浮点型指针。这几种指针就不往下讨论了。

(2)特殊类型指针

空指针、常量指针、指针常量、数组指针、指针数组、结构体指针、联合体指针、枚举指针、函数指针。。。。还有指针指不了的地方嘛?它真是太厉害了。

有一本书,叫深度剖析C语言,里面对各种类型的指针做了详细的介绍,我就不在这儿献丑了。

2.2 二级指针

二级指针,即指向指针的指针。上面提到,指针的内容是某个变量的地址,当这个被指着的变量是一个一级指针时,那么指针就是一个二级指针了。比如定义了一个二级指针

int x=100;int    **p;int   *q = &x;p = &q;变量p内存储了一个变量的地址,找到这个地址,即找到变量q,但是q也是个指针,它的内容不是我们想要的,我们想要的是q指向的那个变量里的数据,即x里面的数据100。有必要提一下,p指向的是q,当有必要时,也是可以把q的内容取出来的,即x的地址。

2.3 多级指针

多级指针是个什么东东?三级指针,指向指针的指针的指针;那四级指针呢?想想就可以了。

1 0