C语言学习

注:一些学习章节的重要小结会用红字著名。

一些必要性补充:进制: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语句运行额外状况。

总结:

执行流程

  1. 计算 表达式的值。

  2. 从上到下匹配 case,若匹配则执行对应代码块。

  3. 遇到 breakswitch结束则退出。

  4. 无匹配时执行 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.当使用指针时,注意指向数据的类型。

 


 

 

 

 

 

 

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值