以下内容可能不全,有大佬知道可以继续补充。
1. c语言的特性
A: c语言是一种底层语言
B: c 语言是一种小型语言
C: c 语言一种包容性语言,c语言假设用户知道自己做什么,
所以她提供了更为广阔的自由度。
优点:
高效
可移植性,c语言编译器规模小,容易编写。
功能强大
灵活
标准库
与UNIX 系统结合紧密
缺点:
出错率高
难理解
难以修改
2. gcc
gcc( GNU Compiler Collection)
基本用法: gcc [options] [filenames]
-c 只编译,生产.o 为后缀的目标文件,通常用于编译
不包含主程序的子程序文件。
-o output_filename 确定输出文件的名称为
-g 产生符号调试工具gdb 所必要的符号资讯
-O 大写哦对程序进行优化编译
-O2 比-o 更好的优化编译
-std 例如: -std= c89 或者-std=c99
c程序(小全)宏观认识(代码角度,和内存角度)
一个较为完整的程序中,可以包含哪些部分?【描述记忆】
//系统头文件 #include... //宏定义 #define.... //全局变量 int data = 1; //自定义函数的声明 int main() //主函数 { //局部变量 local int data=2; for() //if switch while { //块变量 int data = 3; } } //自定义函数 。。。。。
C程序在内存中的分布?
程序段:代码段存放程序代码的一段区域,程序段是只读的。
数据 :存放已经初始化的全局变量。
bss段:通常用来存放程序中未初始化的全局变量和静态变量的一块内存区域堆
堆:保存进程中被动态分配的内存
申请:malloc remalloc(new) OC(alloc new init)
释放:free delete OC(release)
栈
栈:存储了程序中临时创建的局部变量
变量,生命周期,作用域
1.1 局部变量:【准确记忆】
我们把在函数体中定义的变量叫做这个函数的局部变量。
Int main()
{
Int a,b,c,d........//局部变量
}
Int test()
{
Int a; //局部变量
}
局部变量的特点;
1 生命周期:从定义这个局部变量的地方开始,到函数的结束。
作用域(访问范围):在定义这个局部变量的函数内(定义这个变量的以下语句);
1.2 静态局部变量
Static 修饰的局部变量:
特点【描述记忆】
1 生命周期:整个程序
2 作用域:和普通变量一样。
1.值:数值就是上一次函数调用结束之后的数值。
#include <stdio.h> int test(){ static int i=0; i++; printf("i = %d\n",i); return 0; } int main() { int i=0; //这里的i和test里面的i不一样 for(;i<6;i++) { test(); } return 0; }
结果如下: