大家都知道学习c语言 就难的 就在于 指针的 使用了 。 而 指针的使用难度 之一 就在 其 乱七八糟的 声明 :
在此 先给大家 看一个 看声明 :
int * const * (*p)();
那么 我们 该 怎么 去 理解 这声明 ?我们从 最简单的开始
int a ; int b ;
(1) int * p = &a 很显然 这是 声明 一个 指向整数型的指针 ,
并且该 指针 a , 但是 p 指针 是可变的 他 还可以指向 b 如 p = &b ;
而现在 不想 让他改变 就要这么 声明:
(2) int * const p = &a ; 这时 p 只能 指向 a 变量了; 但是 a 变量 值 可以 由 p 来 改变 比如
*p = 4; 就改变了 a 的内容; 如果 我们 不想 p 来改变 a 我们 就要 这么 声明(3) const int * p = &a; 这时 p 就不能 改变 a 的内容了;
这样相信 大家 能理解 int * const 意思 就是 指向 int 类型 的常量 指针、
那么 int *const * 就是 一个 指向 (指向int类型的常量指针)的指针 ; 也就是 二级指针;
(4) int (*p) () 这个 相信大家 知道 这是 函数 指针; 结合 上面的的一点;
那么 上面第一条 指针声明 可以 理解为 p 是一个 指向函数的指针 , 该函数 返回 一个 指针 , 这个指针指向 一个 int类型的 常量指针;
|
|