精华内容
下载资源
问答
  • c和指针》介绍C语言和指针的经典的书籍
  • C语言和指针

    2013-07-08 10:09:36
    C语言和指针内容教学参考,介绍C语言中如何应用指针的方法解释
  • c语言和指针

    2014-04-29 21:44:42
    本书适合有一定的c基础的学者,想要更深层次地了解c和指针的读者可以下载此书。
  • 本书是一本经典C语言数据,适合初中级 读者, 特别是对C指针有深刻的描述
  • 聊聊C语言和指针的本质

    万次阅读 多人点赞 2019-11-24 21:07:34
    很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言指针却是与生俱来的。 那么,什么是指针,为什么大家都想避开指针。 很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针...

    坐着绿皮车上海到杭州,24块钱,很宽敞,在火车上非正式地聊几句。


    很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言,指针却是与生俱来的。

    那么,什么是指针,为什么大家都想避开指针。

    很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针,该变量的类型,自然就是指针类型。

    指针的作用就是,给出一个指针,取出该指针指向地址处的值。为了理解本质,我们从计算机模型说起。

    宏观看来,计算机可以分为两类:

    1. 存储-执行计算机。
      这类机器典型的例子就是我们平时使用的计算机,有一个CPU,有一个内存,CPU仅包含运算逻辑,所有的指令和数据都在内存中,内存仅供存储,不包含任何运算组件。
    2. 现场编程计算机。
      这类机器的典型例子就是ASCI电路,FPGA这种。直接针对特定的需求构建逻辑电路,然而,由于存在笛卡尔积的问题,不太适合通用计算。

    我们看我们平时使用的存储-执行模型的计算机工作模式:

    • CPU在地址总线上发射一个地址到内存。
    • 内存把特定地址对应的数据返回到数据总线。

    看起来,通用计算机就是通过指针完成所有工作的。CPU没有能力直接操作内存里的值,它必须做以下的操作以迂回:

    1. 从特定地址A0取出值V0。
    2. 对V0进行加工运算生成V1。
    3. 将V1存入特定地址A1。

    太初,人们就是按照以上的这么个逻辑编程的,这就是汇编语言:

    mov    -0x4c(%rbp),%ebx
    

    然而,这样太麻烦了,C语言随着简单通用的UNIX操作系统而生,下面的语句看起来更加方便:

    int a = 10;
    char *p = &a;
    *p = 13;
    

    C语言直接映射了CPU的工作方式,而且是用极其简单的方式,这就是C语言的艺术。

    这就是C指针的背景。在那个年代,人们还没有渴望计算机帮助完成更复杂的业务逻辑,人们只是希望用一种更加简单的方式抽象出计算机的行为,最终的结晶,就是C语言。

    于是,我们说,C语言的精华就是指针,指针是C语言的一切。我们可以没有if-else语言,我们可以没有switch-case语句,我们可以不要while,我们不要for,但我们必须有指针。

    是的,我们可以用指针函数的状态矩阵代替if-else之类:

    int (*routine)[...]();
    ...
    condition = calc(...);
    routine[condition](argv);
    

    我们用状态矩阵成功规避了if-else…可以看到,还是用的指针。


    指针是存储-执行模型的计算机工作的必要条件!

    我们再看存储-执行模型的计算机的工作方式:

    • 给定一个地址,CPU就可以取出该地址的数据。
    • 给定一个地址,CPU就可以写入该地址一个值。

    这意味着什么?

    只要想让CPU正常工作,就必须暴露整个内存地址空间给CPU,否则CPU就是一堆毫无用处的门电路,换句话说, 一切来自内存! 操作内存就必然要用指针!


    其实,C语言就是简化版的汇编语言。最终,C语言接力汇编用指针创造了世界。

    不管怎么样,C语言是面向计算机的编程语言,而不是面向业务的编程语言,它映射了计算机的工作方式而不太善于描述业务逻辑,因此,C语言深受黑客,编程手艺人这种计算机本身的爱好者喜爱,却不被业务程序员待见,因为摆弄指针确实太繁琐复杂了,一不小心就会出错。

    存储-执行模型的问题在于,要设计复杂的带外机制防止内存被任意访问,由此而来的就是复杂的分段,分页,访问控制,MMU等机制,当然,这些机制和CPU依靠指针访问内存的工作方式并不冲突。

    把C语言指针用的最绝的应该就是Linux内核的嵌入式链表 struct list_head 了:

    struct list_head {
    	struct list_head *next, *prev;
    };
    

    它可以代表一切,它通过C指针完美诠释了OOD,list_head是世界的基类!

    通过container_of宏,list_head可以转换为任意对象:

    /**
     * container_of - cast a member of a structure out to the containing structure
     * @ptr:        the pointer to the member.
     * @type:       the type of the container struct this is embedded in.
     * @member:     the name of the member within the struct.
     *
     */
    #define container_of(ptr, type, member) ({                              \
            void *__mptr = (void *)(ptr);                                   \
            BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
                             !__same_type(*(ptr), void),                    \
                             "pointer type mismatch in container_of()");    \
            ((type *)(__mptr - offsetof(type, member))); })
    

    这个转换背后的依赖,正是指针:
    在这里插入图片描述

    然而,C语言依然对业务编程不友好,前面说了,C语言映射的就是计算机工作方式本身,若想用好C语言,就必须要懂计算机原理,这并不是业务程序员的菜,业务程序员只是编写业务逻辑,并不在乎计算机是如何工作的。

    曾经,计算机还是一群痴迷于技术本身的极客们的玩具,计算机是属于他们的,他们用C编程,用Perl/Python/Bash粘合二进制程序。进入互联网时代,随着越来越复杂的业务逻辑出现,越来越多的职业程序员开始成了多数派,他们开始使用更加业务友好的语言,Java,Go便成功了。

    不能说这些业务编程语言没有指针,只是它们隐藏了指针而已,它们对程序员暴露了更加对业务友好的编程接口和语法,自己在底层处理指针问题,仅此而已。指针是客观存在的,只要你使用的是存储-执行模型的计算机,指针就是一切。


    浙江温州皮鞋湿,下雨进水不会胖。

    展开全文
  • C和指针 本书提供与C语言编程相关的全面资源深入讨论。本书通过对指针的基础知识高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。
  • C语言的精华重点在于指针的应用,本书的讲解不同于一般C语言基础的学习,更加强向于指针的应用,希望通过本书的学习,能让读者对C语言有重新的认识了解。
  • C和指针 C语言必读

    2012-08-31 21:32:16
    C和指针,深入讲解C语言和指针的应用,包括高级指针,链表的操作,标准库函数。
  • 一本关于C和指针的书,08年畅销书之一,让你真正深刻了解C语言指针的函义!
  • C和指针,第二版,中译本
  • c语言和指针的编程

    2012-07-04 23:16:38
    C和指针》提供与C语言编程相关的全面资源深入讨论。《C和指针》通过对指针的基础知识高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。全书共18章,覆盖了数据、语句、操作符表达式、指针...
  • c和指针》是c语言指针的高级教程,对于指针的讲解很深刻,很精!
  • C语言 C和指针

    2014-02-17 20:59:30
    C语言方面的深入阅读,主要讲C指针,包含很多C语言编程问题
  • 这本书很好的阐述了C语言的知识和指针的概念的理解,我虽然也是博士了,但暑假的时候还是很仔细的研读的,了解了指针这一强大的武器,希望给你带来帮助
  • 详解C语言指针的原理使用,绝对经典,如果想学好C此书值得一看
  • C和指针

    2018-04-13 21:48:38
    想要深入学习C语言的话,这本书是一本不错的C语言深入学习读本
  • c语言的经典著作 c和指针 对学习c语言的人会大有帮助
  • c和指针(c语言设计)

    2014-08-18 13:14:46
    c和指针(c语言设计),本书提供C语言编程相关的全部资源深入讨论。
  • [C和指针].(美)Kenneth.A.Reek C和指针 C语言教程 电子书 扫描版
  • c和指针 c语言学习

    2012-05-10 20:21:02
    c和指针c语言学习的经典书籍,有了一定的c语言基础,效果更佳
  • C和指针 C语言经典教程,适合初学者C语言,适合熟练应用C语言的工作者,能够更直接、深入了解C语言的应用原理。
  • c和指针,学习c语言

    2012-04-10 10:28:37
    c和指针,学习c语言
  • 关于C语言的难道==>指针,相信大家看了这本书肯定会受益匪浅啊,不管是变成老鸟,还是菜鸟,绝对受用哈。。。
  • c和指针 c语言编程陷阱圈套 中文版 精通c语言的四书五经 之二
  • C和指针 经典

    2013-08-24 16:59:02
    C和指针 C编程 难点 指针 免费 C语言指针详解 经典教程 免费下载
  • C和指针指针入手系统讲述C语言应用,适合C语言提高
  • 一本关于C语言的强大工具指针的详细说明,将C语言中的指针单独抽取出来写一本书,足可见C语言指针的强大。讲到了许多指针的详细用法,比较好的一本书。
  • C语言经典书籍,包括C和指针C缺陷与陷阱、C语言深度解剖
  • c和指针教程

    2018-02-09 15:17:52
    c语言c和指针c语言深度教程。c语言的佛经。适合c语言软件工程师学习

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,316,959
精华内容 526,783
关键字:

c和指针