C语言深度解剖第一章笔记

来源:互联网 发布:手机时间与网络同步 编辑:程序博客网 时间:2024/05/21 15:45

1.关键字
1.1定义与申明
定义:创建了一个对象,并分配了相对应的内存
申明:告诉编译器,这个名字已经分配到了一个内存,和这个名字已经被使用。
1.2关键字auto
编译器默认所有变量都是auto,可以忽略
1.3关键字register
请求编译器尽可能将register变量放在CPU内部寄存器上
register修饰的变量必须是一个单个值,且长度小于或等于整形长度;
register修饰变量可能在不在内存中,所以不能用 “&”来获取register变量地址
1.4关键字static
第1个作用:
修饰变量:①静态全局变量:作用域为定义处到文件结束处,其他文件用extern申明也不能用,命名空间,防止命名重复。
②静态局部变量:定义在函数体中,同文档其他函数也不能用;存储在内存静态区,函数结束不会被销毁。
第2个作用:
修饰函数:作用域仅限于本文件,内部函数。不同人编写函数时不用担心自定义函数与其他文件函数同名。

    主要分为两块:    第一表示某块函数退出后,局部变量值还能继续使用,修饰局部变量。正常局部变量是储存在栈,由系统管理回收,全局变量和静态局部变量的存储地方都是静态区,但是静态局部变量的作用域仅限于本函数。    第二块为避免不同文件全局变量和函数名冲突,表示只在本文件使用。    第三块用法:因为存储在静态区,未初始化的都会默认初始化为0,省去赋初值为0    总结为static主要功能是隐藏,其次因为static存储在静态存储区,具备持久性和默认值为0.1.5基本数据类型:short(2)、int(4)、long(4)、char(1)、float(4)、double(4)    变量命名规则:1、望文生意;2、min-length&max-information;3、多词组首字母大写;4、避免出现数字编号,除非逻辑需要,如驱动管脚;5、多文件共享使用全局变量和函数要加限定符如GUI_    标识符命名规则:    模块名缩写_作用域\数据类型\指针前缀_含义标识_数组\结构后缀    含义标识符规则,变量为名词性,DataGotFromSD;函数为动词性,GotDataFromSD    宏定义、枚举常数、只读变量全部用大写字母,用下划线分割单词    局部变量可采用通用命名方式,mnijk表示int,c、ch表示字符,a表示数组,p表示指针typedef struct SM_EVENTOPT{    unsigned char ucDestModID;    unsigned int uiOutEvent;    char cEventOpt_a[3];        }SM_EVENTOPT_st,* SM_EVENTOPT_pst;  不同类型数据之间的运算要注意精度扩展,一般低精度向高精度转换;有符号的向无符号的转禁止使用八进制格式的数,1.6char、unsigned char、signed char    char申明为单纯的字符    signed char和unsigned char是用来声明数值。1.7if、else    1.bool变量与零值进行比较    bool bTestFlag = FALSE;    if(bTestFlag) if(!bTestFlag)最好;    if(bTestFlag == TRUE)不同平台的TRUE定义不一样;    if(bTestFlag == 1)bTestFlag不是整形变量;    赋值运算符不能使用在产生布尔值的表达式上;1.8 switch(variable)    case A:        break;    case B:        break;    default:        break;case 后面只能接整形或字符型常量或常量表达式1.9for循环for循环将最大循环次数放在里面,减少CPU跨切循环层的次数,循环嵌套不超过3层for循环控制变量的取值采用半开半闭区间,循环内代码不超过20行1.10goto语句禁用,影响结构化编程1.11void关键字空类型包含所有,都可以赋值给它,但是它不能赋值给别人C程序默认返回值类型为int。若函数不接受任何参数一定要指明参数为void。int IntArray_a[100];memset(IntArray_a,0,100*sizeof(int));int destIntArry_a[100];const int srcIntArry_a[100];memcpy(destIntArry_a,srcIntArry_a,100*sizeof(int));1.12volatile关键字表示编译器不做优化,每次使用时都需要从内存中重新读取。1.13空结构体占1字节1.14大小端,小端模式表示低地址存低位,常见的有ARM、DSP大端模式表示低地址存高位,常见的是x86和C511.15enum关键字枚举变量类型可以跟其中的常量符号赋值,不赋值会从赋初值的那个变量开始加1,如果都没有赋值,从

0开始依次加1.
常量为整形值。
1.16、typedef与const同时修饰变量
typedef struct
{
char name[5];
int age;
int weight;
}student_st,*student_pst;
const student_pst zhangxiong;
student_pst const zhangxiong;
// 两者表示信息一致,都是表示zhangxiong不变,并不是指针不表,看const修饰时去掉类型。
typedef static unsigned int int32;//错误,typedef存储类,static也是存储类。
typedef int bigbear;
static bigbear a;//typedef定义别名不支持扩展。

0 0
原创粉丝点击