《C和指针》读书笔记(一)

来源:互联网 发布:微信配图软件 编辑:程序博客网 时间:2024/06/10 00:58

第一章 快速上手

 

1.注释有三种写法,“/* */”和“//”,还可以用#if0 statement #endif。并且用“#if 0statement #endif”好过使用“/* */”。

2.如果有一些声明需要用几个不同的源文件,可以在单独的文件中编写这些声明。

3.函数声明又叫函数原型。

4.数组参数是以引用形式进行传递的,也就是传址调用,而标量和常量则是按值传递的。

5.scanf函数的返回值是函数成功转换并存储于参数中值的个数。

6.A&&B,如果A为假,则不执行B。A||B,如果A为真,则B不执行。

7.数组名参数则具有传址调用的语义。

 

第二章 基本概念

 

1.

2.编译、链接生成程序的过程:源代码.c经过编译器编译成目标代码.o(此时预处理器会执行预处理操作),然后多个目标代码和各种库文件.a/.so经过链接器链接成可执行程序。

3.程序的执行:首先加载程序到内存,这样非堆栈存储的变量将进行初始化。然后申请运行时堆栈,存储临时变量和函数返回地址,同时也可以使用静态内存。最后程序退出,内存释放,各种堆栈信息清空。

4.不良的编写风格和不良的程序文档是软件生产和维护代价高昂的两个重要原因。

第三章 数据

 

1.4种基本类型:整型、浮点型、指针和聚合类型。长整型至少应该和整型一样长,而整型至少应该和短整型一样长。

2.该标识符的作用域就是程序中该标识符可以被使用的区域。

3.变量的存储类型是指存储变量值的内存类型。包括:auto,static,register和extern。

4.有三个可以存储变量的地方:普通内存,运行时堆栈和硬件寄存器。

5.当static用于函数定义时,或用于代码块之外的变量声明时,static关键字用于修改标识符的链接属性,从external改为internal,但标识符的存储类型和作用域不受影响。用这种方式声明的函数或变量只能在声明它们的源文件中访问。

6.在定义类型的新名字时,使用typedef而不是#define。

7.内存的构成:可编程内存在基本上分为这样几个部分:静态存储区,堆区和栈区。

(1)静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。

(2)栈区:在执行函数时,函数内局部变量的存储单元可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

(3)堆区:动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用free或者delete释放内存。

此外,代码区存放着函数体的二进制代码。文字常量区用于存储常量字符串,程序结束后系统自动释放。

第四章 语句

 

1.switch语句接受的表达式类型是整形。包括char、int、long、short int。



 

原创粉丝点击