C语言学习笔记(1)

1. 编译和链接

将程序转化为机器可执行的代码,C语言分为三个步骤:

A. 预编译。程序首先会交给预处理器,预处理器执行以#开头的指令,然后给程序添加指令,或者修改指令。

B. 编译。修改后的程序进入编译器,编译器会把程序翻译成机器指令(也就是目标代码),但是这样的程序还是不能执行的。

C. 链接。链接器把由编译器产生的目标代码和其他所需的代码整合到一起,这些附加代码包括程序中用到的库函数。这样就产生了完全可执行的程序。

2. main函数中的exit和return

在main函数中,以两者结尾是一样的。都是终止程序执行,并且向操作系统返回0。

不过exit需要引入stdlib.h库函数。

#include <stdio.h>
#include <stdlib.h>
int main (void)
{
printf("Hello world");
exit(0);
//return 0;
}

3. %i和%d

在printf中使用时,两者没有区别,但是在scanf中,%d只能接受10进制的整数。

但是%i还可以接受八进制和十六进制的整数。

#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int i ;
scanf_s("%i",&i);
printf("%d",i);
}

image

4. scanf函数

scanf本质上是一种“模式匹配”函数。

但是在Visual Studio中调用scanf函数时会给出这样的提示:The function may be unsafe.Please using scanf_s instead.

当用户从键盘输入时,程序并没有读取输入,而是把用户的输入放在一个隐藏的缓冲区中,由scanf来读取。因此如果用户输入了多余的字符,scanf无法彻底完成模式匹配,scanf就会把字符放回缓冲区供后续scanf函数的读取。

 

posted @   飞林沙  阅读(2052)  评论(3编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
历史上的今天:
2009-03-29 重温设计模式(一)——享元模式(Flyweight)
点击右上角即可分享
微信分享提示