C语言基础概念
准备环境
本人使用的继承开发环境为Visual Studio 2022(简称VS 2022)
下载链接
1.源文件和头文件
C语言
源文件后缀为 .c (注:c++源文件后缀为 .cpp)
头文件后缀为 .h
2.编译和链接
C语言源代码本身只是单纯的文本文件,C语⾔代码是放在.c 为后缀的⽂件中的。
必须经过编译和链接之后变成可执行文件才可运行。
文本文件本⾝⽆法执⾏,必须通过编译器翻译和链接器的链接,⽣成⼆进制的可执⾏⽂件,可执行文件才可以执行。
3.第一个C语言程序
//头文件 没有头文件无法解析对应的库函数(例:printf()函数)
//std-标准 i-input输入 o-output输出
#include <stdio.h>
//c语言代码中一定要有main函数,main函数也叫主函数
//main函数是程序的入口,都从main函数的第一行代码开始
int main() {
//main函数里面写代码
//每段代码后面都要加上 ;
printf("hello c语言!");
//return 0结尾
return 0;
}
//运行快捷键 ctrl + f5 或者 fn + ctrl + f5
4.关于main()函数
1.C语言代码从main函数开始执⾏
2.main函数也叫主函数,main函数是程序的入口
3.⼀个项⽬中可以有多个.c⽂件,但是只能有⼀个main函数(因为程序的⼊⼝只能有⼀个)
5.关于printf()库函数
作用:输出打印字符串,也可以输出打印其他类型的数据(用格式化输出)
前提:必须引入stdio.h这个头文件
#include <stdio.h>
int main() {
//printf是一个库函数,专门用来打印数据
printf("hello c!");//打印字符串
//利用格式字符串输出(根据占位符决定数据类型)
printf("%d\n",100);//打印整型
printf("%f\n",100.01);//打印浮点型(默认保留至小数点后6位)
printf("%s\n","你好!");//打印字符串
printf("%c\n",'c');// 打印字符
return 0;
}
输出结果:
字符和字符串的区别以及注意事项
1.字符使用单引号’ ’
2.字符串使用双引号" "
3.汉字占两个字符,所以以字符的形式输出单个中文汉字时会乱码。
6.关键字介绍
关键字,顾名思义,就是很关键的字词,在C语言中大都为构成语法的一部分,比如各种数据类型的定义词(int、long、float、char等)以及一些有重要特殊意义的关键词(if、while、do、for等)。
注:创建标识时不能和关键字重名
C语⾔的32个关键字如下:
7.字符和ASCII编码
C语言中字符用单引号括起来
ASCII编码的意义:
计算机中所有的数据都是以⼆进制的形式存储的,如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准ASCII编码,C语⾔中的字符就遵循了ASCII编码的⽅式。
常见的一些ASCII编码
字符A-Z的ASCII码值从65~90
字符a-z的ASCII码值从97~122
对应的⼤⼩写字符(a和A)的ASCII码值的差值是32(字符小写字母+32=字符大写字母)
数字字符0-9的ASCII码值从48~57
在这些字符中ASCII码值从0~31这32个字符是不可打印字符
0-31这32个字符对应的都是一些操作功能,无法显示。
具体ASCII表可以参考https://www.runoob.com/w3cnote/ascii.html
8.字符串和/0
字符串
定义:使⽤双引号括起来的⼀串字符就被称为字符串。
格式化占位符:%s
以下打印字符串,表面上看上去只有6个字符,但是我们开始对其进行监视
int main() {
printf("abcdef");
return 0;
}
结果从监视的角度看,实际上这段字符串一共有7个字符,最后结尾多了一个 \0 转义字符
C语言中,字符串末尾会隐藏一个转义字符 \0,\0是字符串结束的标记。
字符串与\0的关系
int main() {
//arr1 可以将字符串放到字符的数组中
char arr1[] = "abc";//abc
//arr2 将3个字符放入字符数组中
char arr2[] = {
'a','b','c'};
//arr3 用转义 \0 将字符串隔开
char arr3[] = "abc\0ddd";
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}
输出结果:
解析:
arr1输出abc,正常
arr2输出abc后面还有一堆内容,因为数组arr2在打印完abc后,因为不是字符串,结尾没有 \0 字符标
识使其停止打印,于是一直打印下去,内存里面有一些所谓的"垃圾脏内容"全部都被打印出来了。
arr3输出至abc时,接触\0标识,所以会停止打印。
将arr2数组修改一下,再数组最后一个元素后面再加一个字符 \0
int main() {
//如果在arr2数组在结尾添加一个 \0 转义字符
char arr2[] = {
'a','b','c','\0'};//此时输出完abc即刻停止
printf("%s\n", arr2);
return 0;
}
9.转义字符
转义顾名思义就是转变意思,转义字符明显的特征就是前面会加上一个反斜杠(例如 \n 换行)
拿\n为例
没加上\前,n就是普普通通的一个字符n
加上\后,\n就表示换行这一操作
int main()
{
printf("a\nb");
return 0;
}
以及上述字符串中提到的\0同样也是转义字符,字符0添加 \ 后就成了 \0 ,\0是另一种全新的意义,即字符串结尾标识符。
以下是一些常用的转义字符
转义字符 | 意义 |
---|---|
\\ | 表示符号反斜杠 \ |
\" | 表示字符内部的双引号 ” |
\‘ | 表示字符内部的单引号 ’ |
\n | 换行符 |
\t | 制表符,光标移到下⼀个⽔平制表位,通常是下⼀个8的倍数 |
\b | 退格键,光标回退⼀个字符,但不删除字符 |
\v | 垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列 |
10.关于strlen()函数
作用:计算字符串的长度
int main() {
//计算字符串的长度,直到空结束字符,但不包括空结束字符。
int len = strlen("c:\test\123.c");//这里调式执行后结果为9,但是监视结果为10(监视把\0转义字符算上了)
printf("%d\n", len);
return 0;
}
注意其中的转义字符,一个转义字符算一个字符,c:\test\123.c(标黄部分算一个字符,即\t算一个字符 \123算一个字符)
\ddd :ddd表⽰⼋进制的数字
调试结果:
监视结果:
监视结果发现有10个,因为算上了\0,strlen()不算入\0这个结束标识字符。