黑马程序员技术交流社区

标题: 关于 指针声明 [打印本页]

作者: cp1454298677    时间: 2014-10-3 20:54
标题: 关于 指针声明
      大家都知道学习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类型的 常量指针;   



作者: lyan    时间: 2014-10-3 22:26
理解就好。。平时工作上谁会用到这么复杂啊

就像功夫中的花拳绣腿一样。。实战了有个屁用
作者: cp1454298677    时间: 2014-10-4 09:42
lyan 发表于 2014-10-3 22:26
理解就好。。平时工作上谁会用到这么复杂啊

就像功夫中的花拳绣腿一样。。实战了有个屁用 ...

        一看 就知道  没有实站过 ,  这会复杂  ? 这只是 个 函数指针而已, 已经 是小儿科了!
你根本就不知道 它 的强大 之处。
作者: bhr756052342    时间: 2014-10-4 12:04
所有技术都是为了在实际工作中使用,而不是弄一堆复杂的东西绕晕自己
作者: 明天过后1    时间: 2014-10-4 15:58
楼主能说下 int * p 和  int * const p 和 const int * p 三者区别么?
作者: lyan    时间: 2014-10-4 16:08
cp1454298677 发表于 2014-10-4 09:42
一看 就知道  没有实站过 ,  这会复杂  ? 这只是 个 函数指针而已, 已经 是小儿科了!
你根本 ...

对于这个,我只能呵呵了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2