【笔记】C与指针 第三章 数据
2014-04-16 16:38
190 查看
1.C语言 仅有4种基本数据类型----整型,浮点型,指针和聚合类型(如数组和结构等)
2.char可为signed或者unsigned,所以只有当程序中的char的值位于signed char 和 unsigned char的交集中,这个程序才是可移植的,因为ASCII的字符都是位于这个范围内的
浮点数能够处理正数和负数,signed/unsigned不能用于修饰浮点数
3.标准规定一个最小范围:所有浮点类型至少能够容纳从10的-37次方到10的37次方之间的任何值
4.函数如果不显式地声明返回值的类型,它就默认返回整型
5.typedef允许你为各种数据类型定义新名字,貌似#define也可以完成类似的功能,但是我们还是应该使用typedef,因为后者无法正确地处理指针类型,如:
#define d_ptr char*
d_ptr a,b;
正确地声明了a,但是b却被声明为一个字符,这里还要注意一下#define后无分号,不然将一起当作定义转换
6.正确地辨识 int const *pci 或 const int *pci
int * const pci
int const * const pci
7.链接属性 一共有三种 external外部,internal内部和none无,没有链接属性的标识符(none)总是被当作单独的个体,也就是说该标识符的多个声明被当作独立不同的实体,属于internal链接属性的标识符在同一个源文件内的所有声明中都指向同一个实体,但位于不同源文件的多个声明则分属不同的实体,属于external链接属性的标识符不论声明多少次,位于几个源文件都表示同一个实体
如果某个声明在正常情况下具有external链接属性,在它前面加上static关键字可以使它的链接属性变为internal 例如:
static int c(int d) 就可以防止它被其他源文件调用
static只对缺省链接属性为external的声明才有改变链接属性的效果
当external关键字用于源文件中一个标识符的第一次声明时,它指定该标识符具有external链接属性,但是,如果它用于该标识符的第二次或以后的声明时,它并不会更改由第一次声明所指定的连接属性,例如:
static int i
external int i
此时i并不是external属性,也就说明后面的声明时无效的
8.变量的存储类型决定变量何时创建,何时销毁以及它的值将保持多久,有三个地方可以用于存储变量:普通内存,运行时堆栈,硬件寄存器
修改变量的存储类型并不表示修改该变量的作用域,它仍然只能在该代码块内部按名字访问,函数的形式参数不能声明为静态,因为实参总是在堆栈中传递给函数,用于支持递归
9.static关键字
(1)当它用于函数定义或用于代码块之外的变量声明时,static关键字用于修改标识符的链接属性,从external改为internal,但标识符的存储类型和作用域不受影响
(2)当它用于代码块内部的变量声明时,static关键字用于修改变量的存储类型,从自动变量修改为静态变量,但变量的连接属性和作用域不受影响
2.char可为signed或者unsigned,所以只有当程序中的char的值位于signed char 和 unsigned char的交集中,这个程序才是可移植的,因为ASCII的字符都是位于这个范围内的
浮点数能够处理正数和负数,signed/unsigned不能用于修饰浮点数
3.标准规定一个最小范围:所有浮点类型至少能够容纳从10的-37次方到10的37次方之间的任何值
4.函数如果不显式地声明返回值的类型,它就默认返回整型
5.typedef允许你为各种数据类型定义新名字,貌似#define也可以完成类似的功能,但是我们还是应该使用typedef,因为后者无法正确地处理指针类型,如:
#define d_ptr char*
d_ptr a,b;
正确地声明了a,但是b却被声明为一个字符,这里还要注意一下#define后无分号,不然将一起当作定义转换
6.正确地辨识 int const *pci 或 const int *pci
int * const pci
int const * const pci
7.链接属性 一共有三种 external外部,internal内部和none无,没有链接属性的标识符(none)总是被当作单独的个体,也就是说该标识符的多个声明被当作独立不同的实体,属于internal链接属性的标识符在同一个源文件内的所有声明中都指向同一个实体,但位于不同源文件的多个声明则分属不同的实体,属于external链接属性的标识符不论声明多少次,位于几个源文件都表示同一个实体
如果某个声明在正常情况下具有external链接属性,在它前面加上static关键字可以使它的链接属性变为internal 例如:
static int c(int d) 就可以防止它被其他源文件调用
static只对缺省链接属性为external的声明才有改变链接属性的效果
当external关键字用于源文件中一个标识符的第一次声明时,它指定该标识符具有external链接属性,但是,如果它用于该标识符的第二次或以后的声明时,它并不会更改由第一次声明所指定的连接属性,例如:
static int i
external int i
此时i并不是external属性,也就说明后面的声明时无效的
8.变量的存储类型决定变量何时创建,何时销毁以及它的值将保持多久,有三个地方可以用于存储变量:普通内存,运行时堆栈,硬件寄存器
修改变量的存储类型并不表示修改该变量的作用域,它仍然只能在该代码块内部按名字访问,函数的形式参数不能声明为静态,因为实参总是在堆栈中传递给函数,用于支持递归
9.static关键字
(1)当它用于函数定义或用于代码块之外的变量声明时,static关键字用于修改标识符的链接属性,从external改为internal,但标识符的存储类型和作用域不受影响
(2)当它用于代码块内部的变量声明时,static关键字用于修改变量的存储类型,从自动变量修改为静态变量,但变量的连接属性和作用域不受影响
相关文章推荐
- C和指针 学习笔记——第三章 数据
- 笔记:shmat 共享内存中,如果包含指针,指针数据出错的原因
- 2012/1/9 《C++ Primer Plus》第三章:处理数据 学习笔记
- 数据结构与算法(c语言) 学习笔记——第三章练习
- c++指针学习笔记--交换两个字符串数据
- 数据挖掘 自习笔记 第三章 定性归纳
- 2012/1/9 《C++ Primer Plus》第三章:处理数据 学习笔记
- 关于数据类型与指针的小笔记--初始化问题&&数组
- C++ Primer 学习笔记_49_类与数据抽象 -暗含的this指针
- 第三章、基本数据类型(iOS学习笔记,从零开始)
- SQL必知必会 笔记 第三章 排序检索数据
- SQL笔记-第三章,数据的增删改
- 《C++ Primer Plus(第六版)》(2)(第三章 处理数据 笔记和答案)
- C++学习笔记之数据类型(2)数组、向量、指针
- 读书笔记---C和指针---第三章---数据
- 数据库系统概论第五版学习笔记数据查询 第三章(二)
- 第三章 数据 [C和指针]
- c++指针学习笔记--交换两个字符串数据收藏
- C和指针第三章 笔记
- C++Primer Plus笔记——第三章 处理数据及课后习题答案