什么是指针
根据"The C programming language(2rd)"书中定义的, "A pointer is a variable that contains the address of a variable. "
翻译过来为:指针是一个包含变量地址的变量.
即指针中保存的是另外一个变量的地址.
写一段程序来详解一下:
对这段程序进行编译:
很多初学者容易产生的一个误区是指针的地址就是它所指向的变量的地址,事实上并不是.
从编译结果可以看出, 指针中保存的内容是它所指向的变量的地址, 通过对指针解引用来获取它所指向的变量的内容,通过&p_a看出此处指针和变量并不是同一地址.
int *p_a = &a; // 这里定义一个int型指针, 把a的地址作为p_a的内容,需要注意的是此处的"*"是定义该变量位指针.
后面输出的 "*p_a"表示对该指针解引用(derefrence), 获得它所指向的内存单元的内容.
指针的类型
一般而言,数据类型分为值类型(Value type)和引用类型(Reference type)以及空类型(NULL).
值类型包括: int,double,float, struct,enum.
引用类型包括:object, class, array,interface,string,delegate.
计算机科学中定义指针为编程语言中的对象, 是一种复合数据类型, 属于引用类型.
关于值类型与引用类型的差别: (下图摘自http://www.cnblogs.com/zengming/p/5951351.html#3638389)