初认C语言

C语言的定义,历史与辉煌

定义

c语言是一种计算机语言,通过给它写的程序,给计算机下达指令,让计算机工作。
常见的计算机语言还有:c++/Java/Python

历史与辉煌

首先,c语言是用来取代b语言而产生的;
接着,c语言作为Unix系统的开发工具被重写
至今,c语言仍然被广泛使用。

编译器的选择

编译与链接

1.C语言源代码是文本文件,本身无法执行,必须通过编译器翻译和链接器的链接,生成二进制的可执行文件,能被执行。
单独经过编译器处理⽣成对应的⽬标⽂件(.obj为后缀的⽂件)

3.多个⽬标⽂件和库⽂件经过链接器处理⽣成对应的可执⾏程序(.exe⽂件)

常见的c语言编译器

gcc msvc clang(通过命令来编译代码,不方便)
还有一些集成开发环境如vs2022,XCode,DevC++,Clion等。

VS项目和源文件,头文件的介绍

VS中只需创建新项目即可完成项目创建;
在c语言中,以.c为后缀的文件称为源文件(c++中的源文件的后缀为.cpp),以.h为后缀的文件称为头文件

初认c语言中的函数

main函数

也叫做主函数
1.c语言程序都是从main函数开始执行的,是程序的入口;

2.main前面一般都有int,表示main函数执行结束时返回一个整型类型的值,所以在main函数最后都会写return 0; 作为结束,
下面写一下这个c语言的基本格式:

#include<stdio.h>
int main()
{
printf("一定能学好c语言");
return 0;
}

3.在一个项目中不论有多个.c文件,有且只有一个main函数;

4.初写代码,一些常见的错误:(我自己也犯过的错误)
main书写错误,如mian;
main后边的()的遗漏;
代码中不能出现中文符号,如括号,引号和分号;
一条语句结束后,需要写分号“ ; ”。

printf与库函数

1.库函数是由c语言的编译器厂商根据C语言提供的标准(如函数的功能)来实现的函数,这些函数集集成在一起被称为标准库。这也导致不同的编译器会存在是否支持这些函数的问题

2.一系列的库函数会申明在同一个头文件中,因此库函数的使用,要包含对应的头文件

3.printf就是库函数的一种,需要包含在stdio.h这个头文件下。它的功能是在标准输出设备(一般为屏幕)上进行信息的打印,打印的类型也非常多样,如整型,字符,字符串,双精度浮点型等
printf的简单使用

关键字的简单介绍

c语言中的关键字
1.关键字都有特殊的意义
eg:int - 整型 char - 字符 short - 短整型
long - 长整型 float - 单精度浮点型
double - 双精度浮点型

2.程序员自己在创造标识符的时候不能与关键字重复

3.关键字不能自己创建,c语言中总共32个。

字符与字符串

字符与ASCII编码

1.形如*&%等可以从键盘上敲出来的符号都叫做字符,而在c语言中字符都是用英语中的单括号括起来的,打印的格式为"%c",如’a’ ‘b’ ‘&&’。

2.在计算机中能够识别的是二进制,数据在存储的时活,存储的也是二进制

3.ASCII编码就将每一个字符编了一个二进制序列(这个序列叫做编码),c语言中的字符就遵循了ASCII编码的方式
(ASCII码表:https://zh.cppreference.com/w/cpp/language/ascii)

4.虽然我们不需要记住所有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个字符是不可打印字符,无法打印在屏幕上观察;

5.可打印字符的展示:

字符串与\0

1.c语言中使用双引号括起来的一串字符就被称为字符串,如"fyh",打印格式为"%s"或者直接打印打印格式

2.C语言的字符串的特殊知识,就是在字符串的末尾隐藏放着一个\0字符,这个\0字符是字符串结束标志
对于字符串"fyh",我们看到的字符是3个:f,y,h,但是实际上在末尾还隐藏一个\0的转义字符,\0是字符串的结束标志

3.C语言中也可以把一个字符串放在一个字符数组中,下面我们来演示下\0的功能:

#include<stdio.h>

int main()
{
char arr1[] = {'a','b','c'};
char arr2[] = "abc";
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}

arr1是一个个字符,arr2是字符串
代码运行的结果是代码结果
遇到后面类型”烫烫……“的现象时,则表示出现了乱码,因此我们为了找出问题所在,使用下调试功能来观察啊arr1和arr2的内容:

arr1和arr2很明显的区别就是1中只有3个字符和2中有4个字符(包括\0结束标识)在这里插入图片描述
arr1输入完abc并没有\0来结束这个数组内容,所以后面的内容就是随机的,直到遇到\0,然而arr2数值是使用字符串常量初始化的,打印完abc后紧跟着\0,所以就只打印出abc

那么我们如果在arr1后面加上\0会出现什么结果呢?并且看一下"abc\0efg"中\0会结束字符串吗?我们来试验一下;
在这里插入图片描述
最后运行的结果是都是打印到\0的时候就停止了,因此,足以见得\0的作用。

转义字符

1.前面运用到的\n,\0都是转义字符。转义字符简而言之就是转变原来的意思的字符。在这里插入图片描述
2.C语言中常见的转义字符
• ? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证了。
• ’ :⽤于表⽰字符常量’
• " :⽤于表⽰⼀个字符串内部的双引号
• \ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
• \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。
• \b :退格键,光标回退⼀个字符,但不删除字符。
• \f :换⻚符,光标移到下⼀⻚。在现代系统上,这已经反映不出来了,⾏为改成类似于 \v 。
• \n :换⾏符。
• \r :回⻋符,光标移到同⼀⾏的开头。
•\t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个8的倍数。
• \v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。

3.还有两种特别的转义字符可以表示为字符的8进制或者16进制表示形式:
• \ddd :d d d表⽰1~3个⼋进制的数字。
如: \130 表⽰字符X
• \xdd :d d表⽰2个⼗六进制数字。
如: \x30 表⽰字符0
\0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其ASCII码值是0.

4.转义字符参考:https://zh.cppreference.com/w/c/language/escape

语句及其分类

类型

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("hehe\n");//函数调⽤语句
 int ret = Add(2, 3);//函数调⽤语句 
 return 0;
}

4.复合语句:
复合语句其实就是前⾯讲过的代码块,成对括号中的代码就构成⼀个代码块,也被称为复合语句。

5.控制语句:
用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持的三种结构:顺序结构,选择结构,循环结构),它们由特定的语句定义符组成,C语言共有九种控制语句。

大致分为三类:

  1. 条件判断语句也叫分⽀语句:if语句、switch语句;
  2. 循环执⾏语句:do while语句、while语句、for语句;
  3. 转向语句:break语句、goto语句、continue语句、return语句。

注释

  1. 注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响。
    注释是给程序员⾃⼰,或者其他程序员看的。
    好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注释。
    当然不写注释可能会让后期阅读代码的⼈抓狂。
    写注释⼀定程度上反应了程序作者的素质,建议⼤家写必要的注释,在未来找⼯作的时候,写代码时留下必要的注释也会给⾯试官留下更好的印象。

2.注释的两种形式:

  1. /**/ 的形式
    第⼀种⽅法是将注释放在 // 之间,内部可以分⾏,可以插在语句的行内
/* 注释 */
/*
这是⼀⾏注释
*/

int fopen(char* s /* file name */, int mode);

/**/ 的这个注释也不⽀持嵌套注释, /* 开始注释后,遇到第⼀个 */ 就认为注释结束了。

  1. // 的形式
    第⼆种写法是将注释放在双斜杠 // 后⾯,从双斜杠到⾏尾都属于注释。这种注释只能是单⾏,可以放在⾏⾸,也可以放在⼀⾏语句的结尾。这是 C99 标准新增的语法。
// 这是⼀⾏注释

int x = 1; // 这也是注释

3.不管是哪⼀种注释,都不能放在双引号⾥⾯。
双引号⾥⾯的注释符号,会成为字符串的⼀部分,解释为普通符号,失去注释作⽤。

printf("// hello /* world */ ");

上⾯⽰例中,双引号⾥⾯的注释符号,都会被视为普通字符,没有注释作⽤。

4.注释会被替换
编译时,注释会被替换成⼀个空格,所以 min/* 这⾥是注释*/Value 会变成 min Value ,⽽不
是 minValue 。

完。

  • 15
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值