文章目录
Hello,大家好,今天介绍一下C语言的一些基本概念,知识。
一、C语言是什么
它是一种人造的人与机器交流的高级语言,其功能类似人与人交流的语言比如英语,汉语等。
当然高级语言不止一种,现在已经创造了上千种语言了,其中运用十分广泛的有C语言,C++,Java,Python,其中C语言的历史悠久,但仍然经久不衰。
二、C语言的发展历程
机器语言-b语言-C语言
三、编译器的选择
推荐使用vs2022社区版
四、第一个C语言程序
#include<stdio.h>
int main()
{
printf("hello world.");
return 0;
}
这个入门程序的保姆级解析
include是包含的意思,在使用一个函数的时候要包含头文件(先记下即可)。
其中stdio表示的是standard input output(即标准输入输出函数)h即head(即前面说的头文件)。
再来分析一下int main(),
main就是主函数,每个 C 语言程序不管有多少行代码,都是从 main 函数开始执行的。
main 函数是程序的入口,而前面的int表示整型类型,main 前面的 int 表示 main 函数执行结束的时候返回⼀个整型类型的值,所以在 main 函数的最后写 return 0(当然这个0也可以是1,2,3等任意整数值), 正好前后呼应。
注意事项
(1).main函数是程序的入口
(2).main函数有且仅有⼀个
(3).即使⼀个项目中有多个.c文件,也只能有⼀个main函数(因为程序的入口只能有⼀个)
printf代表的是打印,即stdio中的output中的一种,其中\n表示换行。
五、函数
有主函数,库函数,自定义函数。
主函数前文已讲了一些,现在主要介绍库函数和自定义函数。
(1).库函数:前文提到的printf函数即是,字面意思就是从一个别人已经写好的函数中去调用,此时,就要包含头文件即#include<stdio.h>(还有其他头文件,后面的文章会谈及的),相当于借别人东西要和别人打招呼。
(2).自定义函数:就是自己写的一些函数 。
提一下printf这个及用常见的函数
#include<stdio.h>
int main()
{
printf("hello world\n");//第一种方法
int a=10;
printf("%d",a);//第二种方法
return 0;
}
printf的俩种使用方式,
其中%d是占位符,会被后面的值代替掉。
六、关键词
int,return,if等等就叫关键词。
- 关键字都有特殊的意义,是保留给C语言使用的(所以它也叫保留词)。
- 程序员自己在创建标识符的时候是不能和关键字重复的,比如你设置了一个变量,它的名称不能是关键词的任意一个。
- 关键字也是不能自己创建的。
以下是C语言的 的32个关键词

不需要记忆,后面用多了就可以了。
七、字符和ASCII
&,%,#,¥,i,j,<这些都叫字符
而ASCII是用十,八进制等来表示字符的
下面是ASCII图表

八、可以记一下几个特殊的ASCII
- 字符 A ~ Z 的ASCII码值从65~90。
- 字符 a ~ z 的ASCII码值从97~122。
- 对应的大小写字符(a和A)的ASCII码值的差值是32。
- 数字字符0 ~ 9的ASCII码值从48~57。
- 换行 \n 的ASCII值是:10,
- 在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,无法打印在屏幕上观察。
演示字符的打印
#include<stdio.h>
int main()
{
int c='a';
printf("%c\n",c);
printf("%c",97);//'a'的ASCII值,这样打印也是可以的
return 0;
}
九、字符串和’\0’
前面我们讲到了字符,但是他只能一个个打印,那有没有什么可以一下子打印一连串字符呢?
当然有,下面演示一下字符串的打印
#include<stdio.h>
int main()
{
printf("%s\n","hello world");
printf("hello world");
return 0;
}
我想你一定有疑问,怎么就能精确打印到d结束呢,它有什么可以识别的结束标志吗?
有的,有的,它就是’\0’。
可是为什么写程序的时候没见到呢 ?
因为编译器帮你在末尾加上了。
讲到这里,就要说一下字符串的初始化方式了
#include<stdio.h>
int main()
{
char s1[]="abc";
char s2[]={"abc"};
char s3[]={'a','b','c'};//err,可能会乱码,因为'\0'的位置不确定,不要这样初始化
char s4[]={'a','b','c','\0'};//这样初始化的话,就编译器就不会帮你加上\0
printf("%s\n",s1);
printf("%s\n",s2);
printf("%s\n",s3);
printf("%s\n",s4);
printf("abc\0cdf");
printf("\n");
return 0;
}

这是vs2022中的运行结果。其中第三行就是乱码了。
有了这几个例子,相信你对’\0’已经有了些许直观了解了。
十、转义字符
相信你会有这样的疑惑’\0’,'\n’都有,并且都有特殊的作用,那么到底是什么呢?
其实它们就叫转义字符(顾名思义就是转变他们原来的意思的字符)
举个例子
#include<stdio.h>
int main()
{
printf("abcndf");
printf("abc\ndf");
return 0;
}
我们发现第一个n就是普通字符,第二个竟然有换行作用,而原来应该打印的n却没有打印出来。
简单来讲,就是\使n转变了意思,从普通字符变到了换行字符。
那么有什么常见的转义字符呢,他们的作用又是什么呢?
- \ ? :在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上没法验证了。
- \ ’ :用于表示字符常量’
- \ " :用于表示⼀个字符串内部的双引号
- \ \ :用于表示⼀个反斜杠,防止它被解释为⼀个转义序列符。
- \ a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生。
- \ b :退格键,光标回退⼀个字符,但不删除字符。
- \ f :换页符,光标移到下一页。在现代系统上,这已经反映不出来了,行为改成类似于 \ v 。
- \ n :换行符。
- \ r :回车符,光标移到同一行的开头。
- \ t :制表符,光标移到下⼀个水平制表位,通常是下⼀个4/8的倍数。
- \ v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀行的同⼀列。
下面2种转义字符可以理解为:字符的8进制或者16进制表示形式 - \ddd :d d d表示1~3个八进制的数字。 如: \130 表示字符X
- \xdd :d d表示2个十六进制数字。 如: \x30 表示字符0
\0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,用于字符串的结束标志,其ASCII码值是0。
十一、语句及其分类
代码有什么组成呢,就是由一条条语句组成的
C语言中语句可以分成五类
- 空语句
- 表达式语句
- 函数调用语句
- 符号语句
- 控制语句
空语句
#include<stdio.h>
int main()
{
;//空语句,;是语句的标志
return 0;
}
出现地方:需要⼀条语句,但是这个语句不需要做任何事,就可以用空语句(一般可以出现在精简代码上)
表达式语句
#include <stdio.h>
int main()
{
int a = 20;
int b = 0;
b = a + 5; //表达式语句
return 0;
}
函数调用语句
函数调用有时候是语句。
#include <stdio.h>
int Add(int x, int y)
{
return x+y;
}
int main()
{
printf("hehe\n");//函数调⽤语句
int ret = Add(2, 3);//函数调⽤语句
return 0;
}
复合语句
下面的代码看不懂无所谓,只要看到一个大括号内还有大括号,那里面大括号的语句就是复合语句了,当然有更多大括号也以此类推。
#include <stdio.h>
void print(int arr[], int sz) //函数的⼤括号中的代码也构成复合语句
{
int i = 0;
for(i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
}
int main()
{
int i = 0;
int arr[10] = {0};
for(i = 0; i < 10; i++) //for循环的循环体的⼤括号中的就是复合语句
{
arr[i] = 10 - i;
printf("%d\n", arr[i]);
}
return 0;
}
控制语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。
可分成以下三类:
- 条件判断语句也叫分支语句:if语句、switch语句;
- 循环执行语句:do while语句、while语句、for语句;
- 转向语句:break语句、goto语句、continue语句、return语句。
后期会给大家一 一介绍控制语句。
十二、注释是什么?为什么要写注释?
前面的代码中有很多//加上一些文字的,他们就是注释。
注释的注意事项和作用
- 注释是对代码的说明,编译器会忽略注释,也就是说注释对实际代码没有影响。
- 注释是给程序员自己,或者其他程序员看的。
- 好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注释。
- 当然不写注释可能会让后期阅读代码的人抓狂。
注释的类型
- /* 注释 */
- //注释
他们的区别
/* */优点:
- 可以多行注释。
/* 注释 */
/*
这是⼀⾏注释
*/
- 这种注释可以插在行内
int fopen(char* s /* file name */, int mode);
其中/* file name */用来对函数参数进行说明,跟在它后面的代码依然会有效执行,与之相对的//这没有这个功能。
/ * * /弊端:
- 容易漏掉后面的*/
- /**/ 的这个注释也不支持嵌套注释, /* 开始注释后,遇到第⼀个 */ 就认为注释结束了。
/*
printf("a ");
printf("b ");
printf("c "); /* 注释⼆ */
printf("d ");
*/
最后一给*/无作用了,背离了我们要注释的愿意
//优点
- 将注释放在双斜杠 // 后面,从双斜杠到行尾都属于注释。
//弊端
- 这种注释不可以插在行内
- 这种注释只能是单行
他们的共同点
- 不管是哪一种注释,都不能放在双引号里面。双引号里面的注释符号,会成为字符串的⼀部分,解释为普通符号,失去注释作用。
- 编译时,注释会被替换成⼀个空格,所以 min/* 这里是注释*/Value 会变成 min Value ,而不是 minValue 。
总结
谢谢观看!
15万+

被折叠的 条评论
为什么被折叠?



