注:一些学习章节的重要小结会用红字著名。
一些必要性补充:进制:0x为前缀,则为16进制。0为前缀,则为8进制。0b为前缀,则为2进制。
在2025.9.14发现发现一种很好的思考方式:在什么时候使用 不使用会怎样 它的使用为解决什么 如何让它变成自己想要的效果 应该如何使用 有什么应用 拓展 结合 深层 总结:
1. 什么时候使用?运行的条件?(条件的真假)具体个格式怎样的?运行的结果是什么形式?
2. 不使用会怎样?它所拥有来源于何处?
3. 它的使用为解决什么?
4. 如何控制效果?
5. 正确用法示例
6. 实际应用场景
7. 易犯错误
8. 拓展与深层
9. 总结优化建议
1.C语言常见概念
1. 每个源⽂件(.c)单独经过编译器处理⽣成对应的⽬标⽂件(.obj为后缀的⽂件)
2. 多个⽬标⽂件和库⽂件经过链接器处理⽣成对应的可执⾏程序(.exe⽂件)
3.源文件(.c后缀的文件):使得程序中的函数实现相应的作用,
类似于一种环境。
4.头文件(.h后缀的文件):使用一些库函数时需要声明,若不声明则可能会导致”兵不识将,将不识兵“的状态,头文件与库函数的配合使得程序编辑方便和快捷。
5对于intx(x为任意整形)的理解:起初我是不太了解这个东西的,上了一些网课,int的作用类似于空间开辟,又后来知道是向内存申请空间。下面表述一下我的理解:int向内存申请了4字节(32比特或32位)的内存空间,将x以二进制的形式存入00000000 00000000 00000000 00000000的空间中去,我觉得64位也是同理。
6.关于我正在使用的VS2022的优点:• VS2022是⼀个主流的集成开发环境,企业中使⽤较为普遍 • VS2022包含了:编辑器+编译器+调试器,功能强⼤ • 直接安装即可使⽤,基本不⽤额外配置环境,上⼿容易 • 默认界⾯是中⽂的,初学者友好
7.计算机中所有的值都是以二进制的形式进行存储的。
字符串
一些理解和常见错误
问题:未预留 \0空间(如 char s[3] = "abc")
解决方案:分配额外字节:char s[4] = "abc"
字符与字符串:%s ,它其实不能简单地等同于字符串。它的规则是,从当前第⼀个⾮空⽩ 字符开始读起,直到遇到空⽩字符(即空格、换⾏符、制表符等)为⽌。
C语言类型转化优先级
精度:
char → int → unsigned int → long → float → double
2.C语言数据类型及其变量

Printf和Scanf
1.关于printf的一些常见占位符:%c用以打印字符,%d用意打印十进制术数,%s用以打印字符串,%f用以打印意float声明的变量(若x.为任意小数,用%f对x.进行打印,在x.的后面小数部分默认打印六位数,当满足不了x要求的位数,则小数点后面的末位数自动打印0补齐位数),%p用以打印地址,%x用以打印16进制。
2.scanf返回值的变化:

scanf存在不安全性,使用时应当用%xs(为任意十进制数)限定所要检索数组的大小。
scanf的返回值是一个 整数,表示 成功读取并赋值的变量个数。
字符串
Signed和Unsigned
3.C语言分支和循环
switch语句
switch的应用在于一个变量的不同值执行不同的代码块。
适用的数据类型:int,char,enum。在switch的表达式中,表达式需要确切的数或字符,不适用于判断范围。
基本语法:
switch(表达式)
{
case 1;
break;
case 2;
break;
case 3;
break;
default;
代码块;//不在1~3范围内所执行的代码块
}
switch()的条件括号中必须是整形表达式,case x其中x必须是整形常量,switch()的括号是对条件的检索,检索到特定的x值,则会从对应ease x开始运行,从ease x从上至下,必要时需要用break来控制ease检索的范围,当括号内的表达式都不满足ease x,则需在switch语句中添加default语句运行额外状况。
总结:
执行流程
-
计算
表达式的值。 -
从上到下匹配
case,若匹配则执行对应代码块。 -
遇到
break或switch结束则退出。 -
无匹配时执行
default(若有)。
for循环
3. 问if与else语句: if与else后默认只输出一条语句,如何实现输出多条语句呢?可以添加{}去包含你所需要的语句,else if实质上是对条件上的重复判断,在进行多个条件判断时,可以使用&&(使得数据条件都成立)
4.当有多个if和else,此时else与最近的if相匹配。
5.
操作符
6.逻辑操作符中的短路机制:运行顺序从左到右,(条件一)&&(条件二),若条件一为真,则不会在条件二(右边式子)求值,并直接跳转到下一语句。
7.条件操作符:(条件一)?(条件二):(条件三)若条件一为真,则条件二运行,相反的,条件三运行。
注:我没考虑到运算顺序优先级和运算顺序。
8.关于&&和||的短路特性(短路求值),在&&中,(条件一)&&(条件二),若条件一为假(0),则条件二(右侧)不进行运算。在||中,(条件一)||(条件二),若条件一为真(非0任意数),则条件二(右侧)不进行运算,区别在于条件一的真假。
9.复合操作符:
1.int a = 2后置++与前置++的一些注意事项:后置是先使用后自增1(此时a=2),而前置则是先++后使用(此时a=3)。
3.自增后要注意值的先后变化。
6.问题:为什么要用/n?如果不使用它会怎么样?它的使用为解决什么?答:数据粘连不美观。
7.问题:为什么输出前要用占位说明符来进行说明?答:这是与计算机沟通的一种方式,计算机并不知道以什么形式输出,故需要特定说明。
8.问题:取地址有什么注意的吗,它的易错点在哪?答:数组本身是一种地址,不需要&找地址,声明的变量需要&。
例:int num;
scanf("%d", num); // 漏了 &,直接传值而非地址
9.当使用指针时,注意指向数据的类型。


1万+

被折叠的 条评论
为什么被折叠?



