02 2024 档案
摘要:位运算注意事项 整形在计算机中是以补码的形式进行存储的,因此位运算也是在补码的基础上进行操作的。 复习:正数:原码=反码=补码 负数:反码=原码取反(除符号位) 补码=反码+1 位运算~:按位取反(在补码上按位取反,包括符号位也取反)
阅读全文
摘要:作用域 块作用域:在块(花括号括起来的复合语句)中局部变量、函数形参、for、while、do…while、if都是块作用域。选择与循环中,整个选择与循环是其所在块的子块,循环体/分支体是整个循环/选择块的子块。若嵌套块作用域出现了同名变量,则最内层的块作用域会覆盖掉外层块作用域的同名变量,直到程序
阅读全文
摘要:编译基本过程 源代码(main.c)->预处理器(cpp)->编译器(gcc/clang/msvc)->汇编器(as)->链接器(ld)->可执行文件(main.exe) 预处理器 C语言中预处理器:执行预处理命令(文件包含、宏替换、条件编译)+处理注释(将所有注释替换为空格)+处理续行符(将所有续
阅读全文
摘要:批量组织相同数据类型——数组 C语言将数组看作派生类型(建立在其他类型的基础上)[]:变地址运算符,表示将指针移动多少个存储单元。如a[n]=a[0]+n*sizeof(a[0]);数组的索引,即为下标(变地址运算符中的偏移量)。数组索引范围: [ 0 , 数组大小 − 1 ] [0,数组大小-1]
阅读全文
摘要:顺序结构 两大选择(分支)结构 if(单分支/双分支/多分支)switch(一般用于多分支) 选择块由条件和分支体组成,选择块是其所在块的子块(选择块必须在块作用域中,因为程序执行必须在main函数块中),分支体是选择块的子块。(块套块) 三大基本循环结构 入口型循环:当型循环(while) 计数型
阅读全文
摘要:逻辑运算符 逻辑运算符说明!(逻辑非)单目&&(逻辑与)二目全真(非0)为真。在逻辑表达式中从左至右依次判断关系表达式的布尔值,若有一个表达式为假(0),则中断判断,整个逻辑表达式返回假(0)逻辑运算符是一个序列点||(逻辑或)二目有真(非0)为真,在逻辑表达式中从左至右依次判断关系表达式的布尔值,
阅读全文
摘要:函数 引用式声明(函数原型):简称声明,指定了函数的返回值类型、函数的接受参数类型,这些叫函数的签名。与变量相同,在函数声明时编译器不会为函数分配内存。函数的返回值类型在C99之前若不指明则默认隐式转换为为int类型,但在C99之后必须指明函数的返回值类型。 定义式声明:简称定义,提供了函数的具体实
阅读全文
摘要:\的作用 转义序列说明符续行符 转义序列 活跃位置:输出设备(显示器、打印机等)中下一个字符将要出现的位置,对于显示器则为下个字符将出现的位置。 转义序列含义\a蜂鸣器\b退格(将活跃位置移动到前一列)\f换页(将活跃位置移动到下一页开头)\n换行(将活跃位置移动到下一行开头)\r回车(将活跃位置移
阅读全文
摘要:内存处理函数 内存申请函数(stdlib.h) malloc 原形:void *malloc(size_t size); 功能:用于动态分配指定大小的内存块,分配的内存块不会被初始化,内容是未定义的。 返回值:若分配成功,返回一个指向该内存块起始地址的通用型(void)指针(在C++中必须进行强制类
阅读全文
摘要:指针常量 常量修饰符const在指针声明符*前,表示指针”指向“的这个动作属性是常量,也就是不能通过指针对值进行修改。如: int i=10,j=20; const int *p=&i; //或 int const *p=&i; 这种情况下,const修饰符作用在int*上,表明指针”指向“这个动作
阅读全文
摘要:语句分类 标号语句(标签,常与goto配合使用)复合语句(块)表达式语句(赋值表达式语句、函数表达式语句等)选择语句迭代语句(循环)跳转语句(return,break,continue) 其中复合语句(块)可视为单个语句。因此while和for循环之后加的是单个语句(简单语句、复合语句、空语句(只有
阅读全文
摘要:标识符 声明 定义 int a;//声明(引用式声明)并定义(定义式声明)一个名为a的整形变量 int是数据类型关键字,用于声明并定义标识符a(注意:声明和定义是两个不同的概念,这点在多文件程序中会更加充分体现出来。一般在单文件程序中同时完成了声明和定义两个步骤)。 a是一个标识符,标识符一般是变量
阅读全文
摘要:scanf(“格式化字符串”,可变参数(输入项地址表)); scanf将格式化字符串内容进行转换。有格式化转换符的将字符型(或字符串型)转换为对应格式。 由于C语言函数间传递默认是按值进行传递的,传递的只是数值的拷贝(自动变量),在函数结束之后该拷贝值将会被自动释放,无法起到修改的目的。若想让函数修
阅读全文
摘要:下面以二维数组的动态分配内存为例。 extern int x,y;//x和y是在其他位置定义好的变量,用于指定数组的行和列 for嵌套循环法 申请 int **a=(int **)calloc(x,sizeof(int*));//先申请主数组(每个元素都是一维数组) for(int i=0;i<x;
阅读全文