【C】【笔记】《C和指针》 第一章 快速上手 第二章 基本概念 第三章 数据 第四章 语句 第五章 操作符和表达式
2015-11-08 18:37
781 查看
本文为个人读书笔记,仅供记录学习过程中遇到的日后需要留意的问题,如有相关版权问题请及时通知作者。
所有传递给函数的参数都是按值传递的。
C语言约定:字符串就是一串以nul字节结尾的字符。
为什么用一个整型来读取字符。因为EOF是一个整型值,位数比字符类型要多,用整型来读取字符可以防止输入读取的字符意外的被解释为EOF
要注意避免三字母词trigrph
字符常量的类型总是int
字面值就是常量,翻译不同
浮点数字面值在缺省情况下都是doble类型的。
使用typedef而不是#define来创建新的类型名,因为#define无法正确地处理指针类型
声明变量时,如果变量的值不会被修改,你应当在生命中使用const关键字。
应当避免在嵌套的代码块中出现相同的变量名。
当组成一个程序的各个源文件分别被编译之后,所有的目标文件以及那些从一个或多个函数库中引用的函数链接在一起,形成可执行程序。标示符的连接属性linkage决定如何处理在不同文件中出现的标识符。
链接属性一共有3中——external外部、internal内部和none无。没有连接属性的标识符总是被当做单独的个体,也就是说该标识符的多个声明被当做独立不同的实体。属于internal链接属性的标识符在同一个源文件内的所有声明中都指向同一个实体,但位于不同源文件的多个声明则分属不同的实体。external链接属性的标识符不论声明多少次、位于几个源文件都表示同一个实体。
如果某个声明在正常情况下具有external链接属性,在它前面加上static关键字可以使它的链接属性变为internal。static只对缺省连接属性为external的声明才有改变链接属性的效果。(全局函数全局变量)
当extern关键字用于源文件中一个标识符的第一次声明时,它指定该标识符具有external的连接属性。但是,如果它用于该标识符的第二次或以后的声明时,它并不会更改由第一次声明所指定的链接属性。
作用域/链接属性和存储类型总结
为了保持最佳的可移植性,把字符的值限制在有符号和无符号字符范围的交集之内,或者不要再字符上执行算数运算。
除了实体的具体定义位置之外,在它的其他生命为止都是用extern关键字。
及时switch中不需要default也最好加上default语句
逻辑右移,左边移入的位用0填充;算式右移,左边移入的位由原先该值的符号位决定,符号位为1则移入的位均为1,符号位为0则移入的位均为0,这样能够保持原数的正负形式不变。
ANSI C标准说明无符号值执行的所有移位操作都是逻辑移位,对于有符号值,逻辑移位还是算数移位取决于编译器。
要注意逻辑运算符的短路求值short-circuited evaluation特性
所有传递给函数的参数都是按值传递的。
C语言约定:字符串就是一串以nul字节结尾的字符。
为什么用一个整型来读取字符。因为EOF是一个整型值,位数比字符类型要多,用整型来读取字符可以防止输入读取的字符意外的被解释为EOF
要注意避免三字母词trigrph
??( | [ | ??< | { | ??= | # |
??) | ] | ??> | } | ??/ | \ |
??! | | | ??' | ^ | ??- | ~ |
字面值就是常量,翻译不同
浮点数字面值在缺省情况下都是doble类型的。
使用typedef而不是#define来创建新的类型名,因为#define无法正确地处理指针类型
声明变量时,如果变量的值不会被修改,你应当在生命中使用const关键字。
应当避免在嵌套的代码块中出现相同的变量名。
当组成一个程序的各个源文件分别被编译之后,所有的目标文件以及那些从一个或多个函数库中引用的函数链接在一起,形成可执行程序。标示符的连接属性linkage决定如何处理在不同文件中出现的标识符。
链接属性一共有3中——external外部、internal内部和none无。没有连接属性的标识符总是被当做单独的个体,也就是说该标识符的多个声明被当做独立不同的实体。属于internal链接属性的标识符在同一个源文件内的所有声明中都指向同一个实体,但位于不同源文件的多个声明则分属不同的实体。external链接属性的标识符不论声明多少次、位于几个源文件都表示同一个实体。
如果某个声明在正常情况下具有external链接属性,在它前面加上static关键字可以使它的链接属性变为internal。static只对缺省连接属性为external的声明才有改变链接属性的效果。(全局函数全局变量)
当extern关键字用于源文件中一个标识符的第一次声明时,它指定该标识符具有external的连接属性。但是,如果它用于该标识符的第二次或以后的声明时,它并不会更改由第一次声明所指定的链接属性。
作用域/链接属性和存储类型总结
变量类型 | 声明位置 | 是否存于堆栈 | 作用域 | 如果声明为static |
全局 | 所有代码块之外 | 否 | 声明处到文件尾 | 不允许从其他源文件访问 |
局部 | 代码块起始处 | 是 | 整个代码块 | 变量不存储于对战中,它的值在程序整个执行期一直保持 |
形式参数 | 函数头部 | 是 | 整个函数 | 不允许 |
除了实体的具体定义位置之外,在它的其他生命为止都是用extern关键字。
及时switch中不需要default也最好加上default语句
逻辑右移,左边移入的位用0填充;算式右移,左边移入的位由原先该值的符号位决定,符号位为1则移入的位均为1,符号位为0则移入的位均为0,这样能够保持原数的正负形式不变。
ANSI C标准说明无符号值执行的所有移位操作都是逻辑移位,对于有符号值,逻辑移位还是算数移位取决于编译器。
要注意逻辑运算符的短路求值short-circuited evaluation特性
相关文章推荐
- 关于指针的一些事情
- PostgreSQL教程(五):函数和操作符详解(1)
- Lua和C语言的交互详解
- C# Pointer指针应用实例简述
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言查找数组里数字重复次数的方法
- C++智能指针实例详解