A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cp1454298677 中级黑马   /  2014-10-3 20:54  /  1411 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      大家都知道学习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类型的 常量指针;   


5 个回复

倒序浏览
理解就好。。平时工作上谁会用到这么复杂啊

就像功夫中的花拳绣腿一样。。实战了有个屁用
回复 使用道具 举报
lyan 发表于 2014-10-3 22:26
理解就好。。平时工作上谁会用到这么复杂啊

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

        一看 就知道  没有实站过 ,  这会复杂  ? 这只是 个 函数指针而已, 已经 是小儿科了!
你根本就不知道 它 的强大 之处。
回复 使用道具 举报
bhr756052342 来自手机 中级黑马 2014-10-4 12:04:07
板凳
所有技术都是为了在实际工作中使用,而不是弄一堆复杂的东西绕晕自己
回复 使用道具 举报
楼主能说下 int * p 和  int * const p 和 const int * p 三者区别么?
回复 使用道具 举报
cp1454298677 发表于 2014-10-4 09:42
一看 就知道  没有实站过 ,  这会复杂  ? 这只是 个 函数指针而已, 已经 是小儿科了!
你根本 ...

对于这个,我只能呵呵了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马