文章目录
0、总结
1、介绍
1、C语言
C语言:是一种计算机语言,能给计算机下达指令,让计算机运行工作。
C语⾔最初是作为Unix系统的开发⼯具⽽发明的,回顾历史,窥探C语言发展时期:
-
1969年发明B语言。
-
1972年发明C语言,取代B语言。
-
1973年Unix用C语言重写。
-
1988年C语言标准化
2、编译和链接
C语言是一种编译型语言。C语言源代码是文本文件,人类通过编辑器输入C语言源代码,源代码通过编译器进行翻译产生若干个目标文件,目标文件和链接库通过链接器进行链接,生成二进制的可执行文件。
在一个工程中,由多个源代码组成,工作过程下图所示,说明了源代码通过编译器和链接器进行处理的过程。
因为C语言是一种编译型语言,离不开编译器,常见的编译器有msvc、clang、gcc。
集成开发环境(IDE)是提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。
适合新手上手的集成开发环境(IDE):
- Windows:VS2022、DevC++
- Mac:XCode
适合进阶:
-
vscode
-
vim
3、VS项目
在C语言中,带.c后辍称之为源文件,带.h后辍称之为头文件。
在VS上写代码,需要先创建项目。在项目中可以新建若干个源文件和头文件。
1、我喜欢的字体
2、第一个C语言程序
#include <stdio.h>
int main()
{
// 编译 + 链接 + 运行代码
// 按:Ctrl+F5 or fn+Ctrl+F5
printf("hello,world!\n");
printf("Let's stick to programming\n");
return 0;
}
输出:
hello,world!
Let's stick to programming
2、函数
1、main函数
main函数:代码从main函数开始执行,是程序的入口。
框架如下:
int main()
{
return 0;
}
在一个项目中,无论源文件有多少个,只能有一个main函数。
2、printf函数
printf函数:是一个库函数,按照指定的格式来打印,其中print意为打印,f是format意为格式。
// printf函数的库文件,意为标准输入输出头文件
// .h 头文件
// std standard 标准
// i input
// o output
#include <stdio.h>
int main()
{
printf("hello world\n");
printf("%s\n", "hello");
printf("%c\n", 'h');
// 97的ASCII对应值是a
printf("%c\n", 97);
printf("%d\n", 100);
// C语言默认的浮点常数是double型
// 3.14f的f作用是强制转化为float类型
printf("%f\n", 3.14f);
printf("%lf\n", 3.14);
return 0;
}
输出:
hello world
hello
h
a
100
3.140000
3.140000
这里的%s,%c,%d,%f,%lf是占位符,使用频率非常高,作用是被后面的值替换。
3、关键字
关键字/保留字:C语言中有一些保留的名字,比如int、if、return
等等。
C语言关键字:C 关键词 - cppreference.com,使用时查看即可。
3、字符和字符串
1、字符和ASCII编码
ASCII码表:ASCII 码表 - cppreference.com,使用时查看即可。
常用的ASCII码值:
常用的ASCII码值 | 码值 |
---|---|
字符A的码值 | 65 |
字符a的码值 | 97 |
数字字符0码值 | 48 |
换行的码值 | 10 |
码值的0~31这32个字符无法在屏幕上观察 | |
字符a和A的码值之间差值是32 |
#include <stdio.h>
int main()
{
printf("%c\n", 'A');
printf("%c\n", 'A' + 32);
printf("%d\n", '\n');
printf("%c\n", 65);
return 0;
}
输出:
A
a
10
A
输出ASCII码值:
#include <stdio.h>
int main()
{
int i = 0;
for (i = 32; i <= 127; i++)
{
printf("%c", i);
if (i % 16 == 15)
printf("\n");
}
return 0;
}
输出:
!"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}~
2、字符串和\0
字符串:在C语言中,用双括号起来的一串字符,如:“abcdef”,是一个字符串。
#include <stdio.h>
int main()
{
printf("%s\n", "hello world");
printf("hello world\n");
// 字符和字符串的区别
// 'a' 字符
// "abc" 字符串
printf("%c\n", 'a');
printf("%s\n", "abc");
printf("abc");
return 0;
}
输出:
hello world
hello world
a
abc
abc
C语言字符串的末尾隐藏着一个\0字符,\0字符是字符串的结束标志。如下:
越界访问,如下:
#include <stdio.h>
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a', 'b', 'c' };
printf("%s\n", arr1);
// 越界访问
printf("%s\n", arr2);
return 0;
}
输出:
abc
abc烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫贴-?
相似概念:内存越界、内存泄漏、内存溢出。
-
内存越界:非法访问内存。
-
内存泄漏:申请了空间不释放。
-
内存溢出:想分配的内存超出系统给予的范围。
3、转义字符
转义字符:转变原来字符的意义。
转义序列:转义序列 - cppreference.com,使用时查看即可。
#include <stdio.h>
int main()
{
printf("%c\n", '\'');
printf("%s\n", "\"");
printf("\a");
// 130是8进制,转换10进制是88,88的ASCII码值是'X'
printf("%c\n", '\130');
// x30是16进制,转换16进制是48,48的ASCII码值是'0'
printf("%c\n", 'x30');
// 三字母词:??) --> ]
// ??( --> [
// 有的编辑器可能会输出:(are you ok]
// \? 用于三字母词
printf("(are you \?\?)");
// 综合运用
// strlen函数作用是求字符串长度的时候,
// 统计的是\0之前字符的个数。
printf("\n");
// \ddd:ddd表示1~3个八进制的数字
// \xdd:dd表示2个十六进制的数字
// \0:null字符,代表没有内容,用于字符串的结束标志,ASCII码值是0。
int len = strlen("c:\test\bit\123.c");
printf("%d\n", len);
return 0;
}
输出:
'
"
X
0
(are you ??)
12
4、语句
1、空语句
空语句:一个分号就是一条语句。
#include <stdio.h>
int main()
{
; // 空语句
return 0;
}
2、表达式语句
表达式语句:在表达式的后面加上分号。
#include <stdio.h>
int main()
{
int a = 20;
int b = 0;
b = a + 5; // 表达式语句
return 0;
}
3、函数调用语句
函数调用语句:在函数调用的时候,加上分号。
#include <stdio.h>
int Add(int x, int y)
{
return x + y;
}
int main()
{
printf("hello\n"); // 函数调用语句
int ret = Add(2, 3); // 函数调用语句
return 0;
}
输出:
hello
4、复合语句
复合语句:成对括号中的代码就构成一个代码块。
#include <stdio.h>
int Add(int x, int y) // 函数的大括号中的代码构成复合语句
{
return x + y;
}
int main()
{
int i = 0;
int cnt = 0;
for (i = 0; i < 10; i++) // for循环的大括号中是复合语句
{
printf("%d ", i);
printf("%d\n", ++cnt);
}
return 0;
}
输出:
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
5、控制语句
控制语句:用于控制程序的执行流程。
C语言支持3种结构(顺序结构、选择结构、循环结构),可以分以下三类,C语言有九种控制语句。
结构 | 语句 |
---|---|
条件判断语句/分支语句 | if语句、switch语句。 |
循环执行语句 | do while语句、while语句、for语句。 |
转向语句 | break语句、continue语句、goto语句、return语句。 |
5、注释
注释:对代码的说明,编译器会忽略注释。
C语言中有两种注释,在开发中,最常用的是第二种。
第一种:
/**/
第二种:
//
注意,在编译时,注释会被替换成一个空格。如下。
hello/*这是注释*/world,会变成hello world,而不是helloworld
完。