指针在Wikipedia 上的定义
在計算機科學中,指標(英語:Pointer),是程式語言中的一類數據類型及其物件或變數,用來表示或儲存一個記憶體位址,這個位址的值直接指向(points to)存在該地址的對象的值。
如何理解
- 指针是一个普通的变量或常量,但是它存储的是另一个变量或常量的地址;
- 指针的指针和指针一样,它所存储的也是另一个变量或常量的地址,只不过那是个指针变量或指针常量;
- 指针的指针的指针等同样可以递归理解。
- 函数的指针 和指针唯一的不同是所存储的是一个函数的入口,正像数组名指向数组的入口;
- 同样的,什么的指针,就是指向什么;
二维数组
下面是一个定义示例:
char a[10][100];
很明显它定义了十个一维字符数组 a[0][100], a[1][100] ... a[9][100]。
运用一维数组的知识,我们可以很容易理解,a[0], a[1] ... a[9] 是十个指针常量,分别指向每个字符数组的首地址。
它们在内存中是这样的
那么 a 是啥,它指向了 a[0] 所在的存储空间,是指向指针的指针。
结构体指针
我们知道我们可以用 结构名.成员
来引用某个特定结构中的成员。
对于结构体指针,假设 p 是一个指向结构的指针,可以用以下两种方法引用结构中的成员:
p->x;
/* p -> 结构成员*/
(*p).x;
/*这里小括号是必须的*/
它们的效果是相同的。