指针是C语言的精髓
在这一篇中仅讨论“指针本身”,指针与数组、函数等之间的关联及使用将在下一篇中讨论。
1. 指针是什么?
指针就是指针变量,指针变量也是变量。
2.指针能干什么?
变量是用来存放数据的,所以说指针变量也是用来存放数据的。只不过指针变量中存放的数据比较特殊,存放的是内存地址。
3.为什么需要指针?
需要间接访问。对于某些内存空间,需要通过地址来进行访问,所以需要其他变量存放其内存地址。
4.指针的大小?
既然是变量,指针就占有内存空间。那么,一个指针占有多大内存空间呢?答,和平台相关,例如在32位的环境下,一个指针就占32位,即4个字节。指针中存放的是地址,地址的位数与地址线的条数相关,故指针的大小与它所指向的内存无关,只与地址线的条数相关。
5.指针的使用三部曲
定义、关联、引用。
int *p; //定义
p = &a; //关联
*p = 10; //引用
6.什么是野指针?
所谓野指针,就是指向不确定的地址空间,或者虽然指向确定的地址空间,但引用空间的结果却是不可预知的,这样的指针就称作野指针。
7.NULL是什么?
在C/C++中,NULL的定义为
#ifdef _cplusplus
#define NULL 0
#else
#define NULL (void *)0
#endif