C语言入门笔记(一):一文搞懂新手必知的核心概念
引入
你好,我是尉迟洛林,一个刚刚站到编程世界门口的纯小白。
决定写这个「C语言笔记」专栏的时候,我连一个完整的代码都写不出来。指针、内存、编译器……这些词光是看到,就让我不寒而栗
但正因为怕,正因为不懂,我反倒想用一种很笨的办法去面对它——每学一点,就用自己的话把它讲出来,公开发在这里。
这个专栏不打算做教科书,也没有高手视角。它会是一个真实的、缓慢的、甚至有些狼狈的学习过程记录。你可能会在这里看到:
· 我对某个概念的奇怪联想(可能不严谨,但帮助记忆)
· 以及一些刚刚够得着“理解”门槛的复盘笔记
如果你也是编程初学者,希望我的这些挣扎能让你觉得“原来不只我这样”;如果你是前辈,路过时能点醒我一两句,我将万分感激。
以下是我的第一篇正式笔记——C语言的常见概念。
C语言的常见概念
1.C语言是什么
简单来说,C语言是一门语言,是人和计算机交流的一种语言。
2.C语言的光辉历史
C语言最初为Unix操作系统的开发工具而发明的。
发展:
1969年:贝尔实验室在BCPL语言的基础上发明了B语言
1972年:Dennis Ritchie和Brian Kernighan在B语言上发明了C语言
1973年:Unix操作系统使用C语言重写
1988年:美国国家标准协会ANSI正式将C语言标准化。
至今:一直到今天C语言还是在被广泛使用。
3.编译和链接
C语言是一门编译型计算机语言语言,C语言源代码都是文本文件,文本文件本身不能执行,必须通过编译器的翻译和链接器的链接,生成二进制的可执行程序,才能执行。

注意:
1.每个源文件(.c)单独经过编译器处理生成对应的目标文件(.obj)
2.多个目标文件和库文件经过链接器处理生成对应的可执行程序(.exe)
4.第一个C语言程序
#include <stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
5.main函数
每个C语言程序不管有多少行代码,都是从main函数开始执行的。main函数也被叫做主函数。
(1)main函数是程序的入口。
(2)main函数有且仅有一个。
(3)即使一个项目有多个.c文件,也只能有一个main函数。(程序的入口只能有一个)
常见的错误总结
(1)main写成了mian
(2)main后面的()漏掉了
(3)代码中不能使用中文符号,比如括号和分号
(4)一条语句结束后要有分号。
补充
c
int main(void)
{
return 0;
}
void是无(空)的 意思,即main函数不需要参数。
main函数可以没有参数,也可以有参数,但是main函数的参数有特殊意义和用途的,所以不建议这么写。
6.printf()和库函数
6.1printf()
printf函数实现了在屏幕上打印信息。
printf是一个库函数,其函数原型定义在stdio.h头文件中,使用时需要包含头文件<stdio.h>。printf = print(打印) + format(格式),即指定格式来打印数据stdio = standard(标准) + input(输入) + onput(输出),即标准输入输出
#include <stdio.h>//包含头文件的具体做法
int main()
{
printf("Hello world\n");//""括起来的是字符串
printf("%d\n",123);
printf("%c\n",'q');//''括起来的是一个字符
printf("%f\n", 3.5);//%d %c %f等是占位符,会被后面的值替换。
return 0;
}
有关printf的用法和占位符的知识在下篇中详细的介绍
6.2库函数
C语言标准规定了一组函数,这些函数被编译器厂商根据标准进行实现。这些库函数组成了一个函数库,被称为标准库,这些函数也被称为库函数。关于库函数的相关知识在函数那篇详细讲解我也写过一篇文章关于库函数的学习,感兴趣的朋友可以去看看
【别死记硬背!用一个“猜数字”游戏,掌握库函数的学习方法 - CSDN App】
7. 关键字
C语言中有一批保留名字的符号,如int,if,return等,这些符号被称为保留字或者关键字。
关键字都有特殊的意义,是保留给C语言使用的。
程序员在创建标识符时不能和关键字重复
关键字不能自己创建
C语言常见的关键字:1. auto break case char const continue default do double else enum extern2. float for goto if int long register return short signed sizeof static3. struct switch typedef union unsigned void volatile while
字符与ASCII编码
在计算机中所有的数据都是以二进制的形式存储的,而每一个字符所对应的二进制序列叫做编码。后来ANSI出台了标准的ASCII编码

ASCII编码值得注意的点:1. 字符A~Z的ASCII值为65~90。2. 字符a~z的ASCII值为97~122。3. 对应的大小字符(A,a)ASCII值相差32。4. 数字0~9的ASCII值为48~57。5. 换行'\n'的ASCII值为10。6. ASCII值为0~31为不可打印字符。
9.字符串和\0
字符串:使用双引号引起来的一串字符就称为字符串,如"abcdef"。
字符串的打印格式可以使用%s来指定。
\0:是C语⾔字符串中⼀个特殊的知识,就是在字符串的末尾隐藏放着⼀个 \0 字符,这个 \0 字符是字符串的结束标志。
10.转义字符
在前⾯的代码中你看到 \n , \0 很纳闷是啥。其实在字符中有⼀组特殊的字符是转义字符,转义字符顾名思义:转变原来的意思的字符。
C语⾔中像这样的常见转义字符还有⼀些,具体如下:
•’ :⽤于表⽰字符常量’
•" :⽤于表⽰⼀个字符串内部的双引号
•\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
•\a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。
•\b :退格键,光标回退⼀个字符,但不删除字符。
•\n :换⾏符。
•\r :回⻋符,光标移到同⼀⾏的开头。
•\t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个4/8的倍数。
下⾯2种转义字符可以理解为:字符的8进制或者16进制表⽰形式
•\ddd :d d d表⽰1~3个⼋进制的数字。 如: \130 表⽰字符X
•\xdd :d d表⽰2个⼗六进制数字。 如: \x30 表⽰字符0
11.语句和语句分类
C语言的代码是由一条条的语句构成的(也有说C语言是由函数构成的),C语言的语言可大致分为以下五类
11.1.空语句
空语句是最简单的,⼀个分号就是⼀条语句,是空语句。
#include <stdio.h>
int main()
{
;//空语句
return 0;
}
11.2.表达式语句
表达式语句就是在表达式的后边加上分号。
#include <stdio.h>
int main()
{
int a = 20;
int b = 0;
b = a + 5; //表达式语句
return 0;
}
11.3.函数调用语句
函数调⽤的时候,也会加上分号,就是函数调⽤语句。值得注意的是,在C语言标准中并没有函数语句。 函数调用的是一个表达式。所以函数调用语句的本质是表达式语句。 但在这里方便记笔记,我把他单独拿了出来。
#include <stdio.h>
int Add(int x, int y)
{
return x+y;
}
int main()
{
printf("hehe\n");//函数调⽤语句
int ret = Add(2, 3);//函数调⽤语句
return 0;
}
11.4.复合语句
复合语句其实就是代码块,成对括号中的代码就构成⼀个代码块,也被称为复合语句。
11.5.控制语句
控制语句⽤于控制程序的执⾏流程,以实现程序的各种结构⽅式(C语⾔⽀持三种结构:顺序结构、选
择结构、循环结构),它们由特定的语句定义符组成,C语⾔有九种控制语句。
可分成以下三类:
- 条件判断语句(也叫分⽀语句):if语句、switch语句;
- 循环执⾏语句:do while语句、while语句、for语句;
- 转向语句:break语句、goto语句、continue语句、return语句。
控制语句会后面几篇会详细介绍。
12.注释
注释是对代码的说明,编译器会忽略注释。
注释是给程序员⾃⼰,或者其他程序员看的。
好的注释可以帮我们更好的理解代码。
12.1 注释的2种形式
C 语⾔的注释有两种表⽰⽅法。
13.1.1 /**/ 的形式
第⼀种⽅法是将注释放在 /…/ 之间,内部可以分⾏。
/* 注释 */
/*
这是⼀⾏注释
*/
这种注释可以插在⾏内。
int fopen(char* s /* file name */, int mode);
上⾯⽰例中, /* file name */ ⽤来对函数参数进⾏说明,跟在它后⾯的代码依然会有效执⾏。
12.1.2 // 的形式
第⼆种写法是将注释放在双斜杠 // 后⾯,从双斜杠到⾏尾都属于注释。这种注释只能是单⾏,可以
放在⾏⾸,也可以放在⼀⾏语句的结尾。这是 C99 标准新增的语法。
// 这是⼀⾏注释
int x = 1; // 这也是注释
不管是哪⼀种注释,都不能放在双引号⾥⾯。
双引号⾥⾯的注释符号,会成为字符串的⼀部分,解释为普通符号,失去注释作⽤。
printf("// hello /* world */ ");
上⾯⽰例中,双引号⾥⾯的注释符号,都会被视为普通字符,没有注释作⽤。
12.2 注释会被替换
编译时,注释会被替换成⼀个空格,所以 min/* 这⾥是注释*/Value 会变成 min Value ,⽽不是 minValue 。
写在最后
感谢你读到这里。
这篇笔记是我对C语言“第一印象”的复盘。它可能不严谨,甚至可能有理解偏差,但它真实地记录了一个初学者从零开始的摸索。
在学习C语言的路上,我知道自己还会遇到更多“头皮发麻”的时刻。但正是把这些困惑写下来、梳理清楚的过程,让我开始觉得——这些东西,好像也没那么可怕。
如果你也是初学者:
· 这篇笔记里有没有哪个概念让你特别困惑?
· 或者你有没有自己独特的记忆口诀和学习方法?
如果你是前辈:
· 如果发现文中有任何错误或不准确的表述,恳请指正,我会立刻修改。
· 如果能留下一两句学习建议,那对我将是莫大的帮助。
这个专栏会持续更新,每一篇都是我学习路上的一个脚印。希望我们能一起进步。如果觉得对你有喜欢的,请点关注。谢谢
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)