C语言大一轮复习
文章平均质量分 55
椰萝Yerosius
蒟蒻ACMer,持续进化中,请多指教
展开
-
多维数组的动态分配内存
下面以二维数组的动态分配内存为例。原创 2024-02-17 18:19:42 · 250 阅读 · 0 评论 -
作用域 存储期
块作用域:在块(花括号括起来的复合语句)中局部变量、函数形参、for、while、do…while、if都是块作用域。选择与循环中,整个选择与循环是其所在块的子块,循环体/分支体是整个循环/选择块的子块。若嵌套块作用域出现了同名变量,则最内层的块作用域会覆盖掉外层块作用域的同名变量,直到程序运行退出内部块作用域。函数作用域:goto语句的标签。一个标签无论在函数体的何处(无论处于多少层块中),其作用域是整个函数函数原形作用域:函数形参名。范围从形参定义到函数声明结束。原创 2024-02-17 18:43:10 · 338 阅读 · 0 评论 -
编译基本过程 预处理器
源代码(main.c)->预处理器(cpp)->编译器(gcc/clang/msvc)->汇编器(as)->链接器(ld)->可执行文件(main.exe)原创 2024-02-17 18:42:28 · 215 阅读 · 0 评论 -
位运算(一)
整形在计算机中是以补码的形式进行存储的,因此位运算也是在补码的基础上进行操作的。负数:反码=原码取反(除符号位) 补码=反码+1。:按位取反(在补码上按位取反,包括符号位也取反)复习:正数:原码=反码=补码。原创 2024-02-17 18:43:47 · 382 阅读 · 0 评论 -
批量组织相同数据类型的基础数据结构——数组
0数组大小−1基址是指用于定位数据结构中元素位置的地址。它通常指向数据结构的起始位置或者某个特定元素的位置。基址通常与偏移量结合使用,通过基址加上偏移量来计算访问数据结构中的特定元素的内存地址。在数组中,基址指的是数组的起始地址,即数组的首元素的地址。数组名在大多数情况下可以被视为数组的基址,通过数组名可以访问数组中的元素,时间复杂度为O1。因此,数组中变地址运算符可视为数组的偏移量。在函数调用中,基址指的是当前函数栈帧的基址,也就是栈帧中局部变量和参数的起始地址。原创 2024-02-17 18:40:32 · 763 阅读 · 0 评论 -
单翻译单元的基本结构
选择块由条件和分支体组成,选择块是其所在块的子块(选择块必须在块作用域中,因为程序执行必须在main函数块中),分支体是选择块的子块。(块套块)原创 2024-02-17 18:39:37 · 416 阅读 · 0 评论 -
运算符(一)
C语言中唯一的三目运算符。原创 2024-02-17 18:38:42 · 113 阅读 · 0 评论 -
函数 栈帧
形参在函数调用时会被赋予实际参数的值,而不是独立存在的变量。形参的性质:形参是函数定义中的参数,在函数被调用时用于接收传递给函数的实际参数的值。形参在函数定义时就已经确定了,它们的作用是接收参数值,而不是独立的变量。因此,形参在函数定义中只是参数的声明,用于说明函数接收的参数类型和名称,而不是独立的变量定义。形参和实参的关系:在函数调用时,实际参数的值会被传递给形参,形成了形参和实参的对应关系。形参会在函数执行期间使用实参的值,但形参本身并不是独立的变量,它们不会在函数调用之前分配内存空间或提供初始值。原创 2024-02-17 18:37:46 · 451 阅读 · 0 评论 -
转义序列说明符 续行符(\)
可以在代码任意位置进行续行,强制将某一部分分割到下一行去写。所有作为续行符的\会被预处理器拿掉并将下一行代码连接到上一行。此时需要注意缩进问题,一般下一行不能和上一行保持同样的缩进,否则用于缩进的Tab/Space也会被连接到上一行。活跃位置:输出设备(显示器、打印机等)中下一个字符将要出现的位置,对于显示器则为下个字符将出现的位置。原创 2024-02-17 18:37:12 · 247 阅读 · 0 评论 -
内存处理函数 内存池
malloc功能:用于动态分配指定大小的内存块,分配的内存块不会被初始化,内容是未定义的。返回值:若分配成功,返回一个指向该内存块起始地址的通用型(void)指针(在C++中必须进行强制类型转换)。若分配失败,返回空指针。calloc功能:动态分配数量为 num ,每一块大小为 size 的连续内存块,并将其内容初始化为0。返回值:若分配成功,返回一个指向该内存块起始地址的通用型(void)指针(在C++中必须进行强制类型转换)。若分配失败,返回空指针。realloc。原创 2024-02-17 18:33:23 · 515 阅读 · 0 评论 -
常量指针 指针常量
常量修饰符const在指针声明符*前,表示指针”指向“的这个属性是常量,也就是不能通过指针对值进行修改。这种情况下,const修饰符作用在int*上,表明指针”指向“这个动作的属性是常量,不能通过指针进行修改i。原创 2024-02-17 18:31:49 · 804 阅读 · 0 评论 -
表达式 副作用 序列点
其中复合语句(块)可视为单个语句。因此while和for循环之后加的是单个语句(简单语句、复合语句、空语句(只有1个;构成的语句))原创 2024-02-17 18:31:17 · 349 阅读 · 0 评论 -
Q&A:为什么scanf的可变参数列表是输入项地址表?
若忘记加上取地址符(间接寻址符)(&),由于scanf不会检查传入可变参数的内容是否是合法,仍然将传入的内容当做正确的地址处理,由于与变量先前的值相等值的地址是不可预测的(可能是其他程序申请的内存,或为操作系统核心部分内存),会造成地址的非法访问(访问了未经申请的内存),这样操作会触发操作系统内存保护机制,被操作系统认为是具有危害性的行为,操作系统会强行终止程序以确保系统正常运行(Runtime Error)。因此下次读入时必须手动清除缓冲区中该项内容(getchar()或fflush(stdin))。原创 2024-02-17 18:26:37 · 237 阅读 · 0 评论 -
基本数据类型
和。原创 2024-02-17 18:28:41 · 985 阅读 · 0 评论