大致了解C语言


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 。

总结

谢谢观看!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值