C Primer Plus 精读(一)

阅读之前:

文中“C::”的意思没有特殊说明都是摘抄自Cprimerplus中文第六版的。
本文(CPP精读)作者水平较弱,欢迎指出错误。
这篇文章并不是想说CPP中的可圈可点处,这本书写的非常不错,而是我注意到的地方,和个人的一点点想法。

第一章 初识C语言

1.1C语言的起源

在B语言基础上进行设计。

1.2选择C语言的理由

1.2.1设计特性

“易懂”、“可靠”

1.2.2高效性

C具有通常汇编才具有的微调能力,最大运行速度 或 最有效的使用内存。

1.2.3可移植性

特殊硬件设备(C::显示监视器)(我还真的没有找到有关与显示监视器是啥的说明,应该是翻译从不知道哪里扣出来了的什么字眼),操作系统的特殊功能,通常不可移植。
2017-12-24更新:显示监视器:display monitor此处找了找资料screen是那块屏幕,monitor是整个这个显示器。。。很拗口。
C与UNIX关系密切,安装Linux的时候通常也会安装C编译器,(这里可能是说UNIX和Linux确实算是同类)。

1.2.4强大而灵活

UNIX 大部分是用C写的,其他语言(C::FORTRAN…BASIC)的许多编译器和解释器都是用C写的,UNIX执行FORTRAN甚至最后执行的是C程序。

1.2.5面向程序员

C可以访问硬件,操纵内存中的位。
C::这样的灵活性即是优点又是缺点。
引用Ben(蝙蝠侠他叔叔)的:能力越大,责任越大。或许你也可以在装好cent之后第一次sudo看到类似的话语。

1.2.6缺点

涉及指针的错误难以察觉,等等。
C::C语言的有点比缺点多很多。我们不想在这里多费笔墨。
C::国际C语言混乱代码大赛,挺有意思的可以饭后茶余吹b的时候谈谈。

1.3C语言的应用范围

C::C++几乎是C的超集。

1.4计算机能做什么

C::学习如何用C语言变成之前,最好先了解一下计算机的工作原理。
滑稽之处是作者所在的大学甚至没有C的基础直接就教了C++,scanf都没有搞清楚就在使用cin了(老师),编译器都在下载不来就在用DEV了,Windows下还在使用360就开始黑用Mac的人没有脑子了(同学普遍),这里希望一知半解的人好好去最次也要是在百度中搜索一下什么是scanf,不要闹出scan file 或是 scan function这样的笑话同学们甚至连这个都会去学。

1.5高级计算机语言和编译器

C::高级编程语言(如,C)以多种方式简化了编程工作。
C是一种高级编程语言哦!
C::程序员进行高级思维活动,而编译器则负责处理处理冗(rong)长乏味的细节工作。
希望大家不要傻啦吧唧写出令人难懂的1<<1这种奇怪的1*2的C实现,现在的C编译器非常非常聪明,汇编之后是一样的,机器执行起来也是一样的,但是人看起来是不一样的!代码是写给人看的。

1.6语言标准

C::UNIX实现提供的库已成为标准库

1.6.1第一个ANSI/IOS标准

这玩意通常叫做C89或是C90。
C::C的精神:

  • -信任程序员;
  • -不要妨碍程序员做需要做的事;
  • -保持语言精炼简单;
  • -只提供一种方法执行一项操作;

最后一点的用意:应对目标计算机来定义最适合的特定操作,而不是强加抽象统一!所以说JAVA和C很像其实是不服责任的,你也不能在学会C++(实际上很少人可以做到)之后大叹气说到C啊我会,这是两种语言!希望教书的人可以负起责任!

1.6.2C99标准

C::

  • 支持国际化编程
  • 在遇到需要将C移至64位处理器时,委员会根据显示生活中处理问题的经验来添加标准
  • 提高C的适应性

    (尽量与C90、C++兼容)

1.6.3C11标准

不在重视”信任程序员“
本书在C11浅尝辄止!

1.7使用C语言的 7个步骤

  1. 定义程序的目标
  2. 设计程序
  3. 编写代码
  4. 编译
  5. 运行程序
  6. 测试和调试程序
  7. 维护和修改程序
    接下来的七个小结作者将结合在某大学上课的经历进行研读。

1.7.1定义程序的目标

作者所在的学校第一个学习写一些东西除了期末的大作业都是在自己学校的OJ上完成的。这会有非常多的不可比性。选择使用OJ可以非常方便的训练学生定义程序的目标:不就是完成题意吗?

1.7.2设计程序

emmm,这个地方OJ就非常有意思了,程序并不是设计出来的,你可以设计,更加可以嫖,甚至可以通过提交随机输出的程序完成一个题目。。。
C::应该用一般术语来描述问题而不是具体的代码!
这里说的非常精妙如果只是学习怎么写代码,是不用注意的!就像我们学校的大作业,我们的“开发团队”甚至没有大任何草稿就将成品弄了出来,值得表扬吗?我觉得应该批评。

1.7.3编写代码

C::在这一步骤中,应该给自己编写的程序添加文字注释。
事实上这个是我们学校欠缺的,哪个傻啦吧唧的会往只有几行的交到oj上去的代码里面添加注释。甚至写了一个学期的代码,到期末大作业的时候甚至出现了,所有变量命名都是abcd的好笑场面。

1.7.4编译

编译的细节取决于编程的环境,不要在Linux环境下包含什么< conio.h >

1.7.5运行程序

学校的OJ就比较蠢了,多一个空格都不允许。。。

1.7.6测试和调试程序

C::随着你越来越老练,你所写的程序中的错误也会越来越不易察觉。

1.7.7维护和修改代码

这是用OJ学习最大的缺点,谁会去改OJ上已经过了的题?写了个把来月的码之后回去看自己以前写的大作,怕是看见小学三年级时候自己作文竞赛得奖的作文。

1.7.8说明

编程不是一个线性的过程,C::磨刀不误砍柴工,后面半句自己看!

1.8编程机制

基本名+’.’+扩展名

1.8.1目标代码文件、可执行文件和库

编译器和链接器

1.8.2UNIX系统

用UNIX装备C程序
不是我贬低Windows用户,但只在Windows上写写java代码我感觉是挺普通的,既然使用了UNIX或是基于UNIX或是Linux系统了,这部分知识是挺重要的可以好好看看书,真正意义上玩一玩电脑。

1.8.3GNU编译器合计和LLVM项目

GNU编译器合计(这玩意就是大名鼎鼎的GCC包括了GCC C编译器)GCC有各种版本支持UNIX,Linux,Windows,gcc命令即可调用。
LLVM大概就是Clang了吧,这玩意现在是FreeBSD的默认C编译器(macOS基于FreeBSD不要忘了)。

1.8.4Linux系统

我们是开发者兄弟(姐妹),不要再觉得Linux困难(也不是简单)了,这是我最后一次说这个了。

1.8.5PC的命令行编译器

Cygwin&MinGW
其实我挺佩服用Windows的人的。

1.8.6集成开发环境

希望我佩服的人能够自己吧这一节读了去。

1.8.7Windows/Linux

C::许多Linux发行版都可以安装在Windows系统中,Linux可以访问Windows文件,Windows不能访问。
我觉得吧,可能说是Windows装在Linux上更好。。。

1.8.8Macintosh中的C

C::UNIX系统内置Mac OS X……emmm这句话我没读懂,希望有能人可以在评论中解释。
2017-12-24更新:原书写到:Mac OS X is built on UNIX,翻译的水平真是有待提高,意思是Mac OS X基于UNIX。

1.9本书的组织结构

emmm没啥好概括的。

1.10本书的约定

1.10.1字体

1.10.2程序输出

1特殊的击键

2本书使用的系统

iMac OS X 10.8.4 XCode 4.6.2 Clang3.2
大部分能在Windows7 VS2012、Pelles C 7.0
Ubuntu13.04 linux GCC4.7.3编译

3**本文作者使用的系统**

我比较皮,不能保证任何系统的使用,希望读者可以对自己的机器进行优化

4读者的系统

严以律己宽以待人

1.11小结

第二张可能要过一段时间再发布了

1.12复习题

你不如多装几个系统抄写并编译运行以下程序:

#include <stdio.h>
int main(int argc, char *argv[])
{
    printf("hello c");
    return 0;
}

1.13编程练习

再好好学习之前,你应该问问为什么我太爷爷可以活到101岁。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页