若触过汇编语言,那么理解学习C语言中指针就很简单了。指针,在汇编里面的表现形式,无非就是寻址,直接寻址和间接寻址。

  C语言中的4大类数据类型:
       基本类型:int,long,float,char
       构造类型:数组,结构体-struct,联合体-union, 枚举类型-enum
       指针类型:int*, long*, float*, char* 等等
       空类型 :void

       如上,指针是一种数据类型,如同整数型有int,long,float,short ,
       指针型下面也有int*,long*,float*, char*, struct* 等等。
       
       举例说明:定义一个int型指针。
       int a=12345;        //定义了一个整型变量a
       int* pa=&a;        //定义了一个指针名叫pa,它指向的是一个整数a。也可叫pa是个整型的指针。
       //对int 后面加个*,就表示这个变量pa,不是int整型了,而是整型指针了。
       &a表示取到变量a的地址, 这个地址一般是一个32位的数据,地址内放的值是12345。
       int* pa=&a;  表示把变量a的地址当做数据,赋值给变量pa。

       这里需要理解地址和地址存的数据,这两个概念。
       地址就好比你家的地址,买东西要填写的收获地址;
       地址内的数据就好比你家的房子;

仔细看下面的代码:

C语言中指针的学习笔记-1

我这里显示变量a的地址是0x0019 fedc ,地址值应该是4字节的,前面两00可以省略不显示的。

从上面的例子可以看到,指针变量pa地址内的存放的是 整型变量a的地址,也可以说变量pa的值是 变量a的地址。

而常说的-指针变量pa指向的值,在这里就是变量a的值=12345;  *pa 就是取值的意思,程序执行*pa的操作是,选取到pa内存的值,然后把这个值当做"地址",在去取这个“地址”内存放的值。

举个例子,说明下: 老板让你去客户的公司拿个材料(即从客户处取个数据), 但是没直接告诉客户公司的地址,咋整??

这时,老板说,客户公司的地址我写在我的笔记本上,但笔记本放在了我家里。 我这里给你个纸条,上面是我家的地址,你先到我家,拿到笔记本,看上面客户的公司地址,在去客户公司,把材料拿回来。

 

 

相关文章: