0%

之前看了几乎忘光了,并且似乎也没有全部看完?,这次看能不能趁着国庆这几天尽快过一遍

豆瓣介绍:

这本久负盛名的 C++经典教程,时隔八年之久,终迎来史无前例的重大升级。除令全球无数程序员从中受益,甚至为之迷醉的——C++ 大师 Stanley B. Lippman 的丰富实践经验,C++标准委员会原负责人 Josée Lajoie 对C++标准的深入理解,以及C++ 先驱 Barbara E. Moo 在 C++教学方面的真知灼见外,更是基于全新的 C++11标准进行了全面而彻底的内容更新。非常难能可贵的是,《C++ Primer 中文版(第5版)》所有示例均全部采用 C++11 标准改写,这在经典升级版中极其罕见——充分体现了 C++ 语言的重大进展及其全面实践。书中丰富的教学辅助内容、醒目的知识点提示,以及精心组织的编程示范,让这本书在 C++ 领域的权威地位更加不可动摇。无论是初学者入门,或是中、高级程序员提升,本书均为不容置疑的首选。

阅读全文 »

从本章开始将会每一篇博客整合多个章节的内容,发现每一章记录的内容不足以撑起一篇所谓的博客

  1. 如果函数库的一份拷贝是可执行文件的物理组成部分,那么我们称之为静态链接;如果可执行文件只是包含了文件名,让载入器在运行时能够寻找程序所需要的库函数,那么我们称之为动态链接
  2. 外部函数被真正调用之前,运行时载入器并不解析他们。所以即使链接了函数库,如果并没有实际调用,也不会带来额外开销。
阅读全文 »

本章主要通过不同文件头部引用的问题讲述了数组和指针的一些区别
考虑以下两个文件的头部声明

1
2
3
4
// 文件1
int mango[100];
// 文件2
extern int *mango;

在文件1中定义了一个名为mango的数组,文件2中声明了一个名为mango的外部指针变量

extern对象声明告诉编译器对象的类型和名字,对象的内存分配则在别处进行。由于并未在声明中为数组分配内存,所以并不需要提供关于数组长度的信息。对于多维数组,需要提供除最左边一维之外其他维的长度—-这就给编译器足够的信息产生相应的代码

阅读全文 »

  1. 本章提到了第二章所说的判断声明时实际类型的方法实际上是C语言设计的哲学之一

    然后出现了一种C语言设计哲学,要求对象的声明形式与它的使用形式尽可能相似。一个int类型的指针数组被声明为int *p[3],并以*p[i]这样的表达式引用或者使用指针所指向的int数据,所以它的声明形式和使用形式非常相似。但是这种哲学从实践上来说并不是十分正确。毕竟使用和声明还是两种完全不同的东西,强行让这两者相同会导致声明的时候无法按照从左到右的自然阅读顺序来理解声明的类型。同时限定符const的加入让事情变得更加复杂

阅读全文 »

  1. 一般来说只要看到malloc(strlen(str))基本都是错误的,正确的应该是malloc(strlen(str)+1),由于需要为\0符号留出空间

  2. NULNULL,前者为\0,后者表示什么也不指向(空指针)

阅读全文 »

由于参加的实验室主要是以C/C++为主,所以计划把C/C++的一些经典书籍再读一遍,有的是之前就没有读或者读完的。这次就从《C专家编程》开始叭

豆瓣介绍:

《C专家编程》展示了最优秀的C程序员所使用的编码技巧,并专门开辟了一章对C++的基础知识进行了介绍。书中C的历史、语言特性、声明、数组、指针、链接、运行时、内存以及如何进一步学习C++等问题进行了细致的讲解和深入的分析。全书撷取几十个实例进行讲解,对C程序员具有非常高的实用价值。本书可以帮助有一定经验的C程序员成为C编程方面的专家,对于具备相当的C语言基础的程序员,本书可以帮助他们站在C的高度了解和学习C++。

  1. 对于宏这样的预处理器,只应该适量的使用。最好只用于命名常量,并为一些适当的结构提供简介的记法
阅读全文 »

前言

从刚入大学起便陆陆续续尝试了各种Linux发行版本,最常见的当然是Ubuntu,以及这篇文章中所介绍的Arch(系)。最开始的尝试可以说只是小打小闹,虽然是以双系统的方式安装的,但是实际启动的次数屈指可数。在经历了一次Windows更新更炸之后,我便决定以尝试以Linux作为主力系统。从去年开始到现在满打满算差不多一年半的时间,我基本没有开启过Windows系统,只有在寻找以前的文件以及运行某些软件(如pandownload)时才会开启打开Windows或者开启Windows虚拟机。日常的学习以及代码编写基本没有不适感。所以个人感觉还是比较有说服力的。中途经历了一次从纯Arch转到Manjaro-Deepin的过程,由于本人的大多数代码文件都在github上保存,所以迁移起来也很很顺利,而deepin-dde也给了我很大的惊喜(虽然最近更新的V20个人不是很喜欢)。由于本人使用的manjaro-deepin在manjaro的官网已经没有了下载途径(其他地方似乎也找不到),并且官方也宣布近期不会进行适配,但总的来说,本文所推荐的软件对于Arch系乃至于所有的Linux发行版本应该都是适用的。

文中不会包含一些过于基础的软件包,如npm, git等。既然都来Linux,相信这些基本的工具应该不需要多说(并且有时系统会自带这些软件包,尤其是Manjaro发行版本)

阅读全文 »