C语言大总结(很清晰的思维导图,有面试一些题目)

C语言32个关键字数据类型char,short,int,float,double,long,void  7计算大小sizeof类型限定static,const,extern,volatile,enum,struct,union,unsigned,signed,atuo,register  11分支语句if,else开关语句switch,case,default,break,continue  5跳转语句goto,return 2类型重定义typedef循环语句while,for,do  3Stringstrcmpstrcatstrcpystrlen进程映像代码段只读权限,存储二进制指令和一些常量(字面值常量、宏常量、枚举量)堆内存空间大,分配和释放都根据程序员决定栈内存使用方便,安全,操作系统自动分配、释放,不会产生内存碎片和内存泄漏。全局数据段初始化过的全局变量和静态变量静态数据段未初始化的全局变量和静态变量文件的分类二进制文件把数据的补码直接写入到文件中,文件内容无法阅读,一般用于保存临时文件文本文件记录数据的ASCII的二进制文件,先把数据转换成字符串,再写入到文件中,可以被阅读内存管理malloc33页以内callocreallocnewfreedelete指针定义:指针是一种数据类型,它可以定义指针的变量,可以通过变量的整数访问对应的内存作用:1、优化传参效率(传参地址4/8字节)2、函数间共享内存3、堆内存必须配合指针使用指针与数组的关系(*p,arr[]):相同点:都可以访问整个数组不同点:p是指向数组,而arr是数组的映射复合数据类型struct1.C++和C语言不同对齐补齐enum把一种变量可能出现的值都罗列出来union进行大小端的测试修饰变量的关键字auto一般都不用加extern告诉其他代码变量已被定义可以使用static改变存储位置把局部变量和块变量的存储位置由栈改为datass限制作用域把全局变量和普通函数的使用范围限制为只能在目标文件内使用延长生命周期把局部变量和块变量延长到程序结束才释放const保护机制,加了后就不能更改与宏常量的优缺点宏常量优点:全局使用,不会被修改缺点:会一直占用内存,不会被释放const优点:生命周期结束会被释放缺点:不是真正的常量,有被修改的风险volatilecpu每次都会从内存进行重新读取用于线程间共享变量,裸机编程typedeftypedef int* intp#define intp int*register申请变量的存储位置由内存改为寄存器,会提高速度文件的操作创建文件creat("文件名",0777)打开文件fopen("文件名","w+")open读readfread二进制文件fscanf文本文件(fd,"%d",&num)fgets字符串(buf,sizeof(buf),fp)写writefwrite二进制文件fprintf文本文件(fd,"xixi")(fd,"%d %s",num,str)fputs字符串(buf,fp)文件权限int access(const char *pathname, int mode);改变文件位置int fseek(FILE *stream, long offset, int whence);void rewind(FILE *stream);long ftell(FILE *stream);到达文件末尾feof(fp)关闭文件fclose(fd);Makefile# 获取要编译的源码SRC  :=$(wildcard *.cpp)OBJ  :=$(patsubst %.cpp,%.o,$(SRC)) # 编译参数CC   :=g++STD  :=-std=c++0xBIN  :=GoalFLAG :=-Wall -Werror all:$(OBJ)    $(CC) $(OBJ) -o $(BIN) %.o:%.cpp    $(CC) $(STD) $(FLAG) -c $< clean:    rm $(OBJ) $(BIN)面试题strlen与sizeof        1、strlen是标准库函数,sizeof是C语言的关键字。        2、strlen是专门计算字符串长度的,sizeof可以计算任何类型。        3、当参数是字符串字面值时,strlen的结果不包含'',sizeof的结果包含''。        4、当参数是char指针,strlen的结果字符串长度,sizeof的结果4/8。        5、当参数是个表达式,strlen会计算表示式,而sizeof不会。const与常量String4种方式指针与数组的区别堆内存与栈内存的区别static的作用32个关键字什么是野指针.c如何变成可执行程序预处理:gcc -E file.c -o file.i编译:gcc -S file.i汇编:gcc -c file.s链接:gcc file.o

原文地址:https://www.cnblogs.com/LTprogrammer/p/13256631.html