第2章 C是怎么使用内存的
2.1 虚拟地址
在如今的运行环境中,应用程序面对的是虚拟地址空间。
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&hoge); // 将buf写入到hoge
2.2 C 的内存使用方法
2.2.1 C的变量种类
1. 全局变量
2. 静态变量-- 作用范围只在当前文件有效
3. 局部变量-- 函数中声明的变量 作用域只在该函数中,除非在该局部变量前加 static
2.2.2 输出地址
【函数、字符串常量】
【静态变量(函数内/文件内)】
【利用malloc分配的内存区域】
\\\
\\\
【自动变量】
2.3 函数和字符串常量
2.4 静态变量
2.5 自动变量
C语言中,通常将自动变量保存在栈中,内存区域可以重复利用。
* 在调用方,参数“从后往前”按顺序被堆积在栈中~~!!!
内存中存储方式:
假设一个栈:从上往下地址依次增大
main()在较大地址位置,调用函数在较小地址位置。
第三章 揭秘C的语法—它到底怎么回事
3.1 解读C的声明
3.1.1 用英语来读
3.1.2 解读C的声明
步骤:
1. 首先着眼于标识符(变量名或者函数名)
2. 从距离标识符最近的地方开始,依照优先次序解释派生类型(指针、数组和函数) 优先次序如下:
1)用于整理声明内容的括弧
2)用于表示数组的[],用于表示函数的()
3)用于表示指针的*
3. 解释完派生类型,使用“of”、“to”、“returning”将它们连起来。
4. 最后追加数据类型修饰符(左边,int、double等)
eg. int(*func_p)(double)
func_p is pointer to function(double) returning int