c语言基础知识

1. C语言是什么?

⼈和⼈交流使⽤的是⾃然语⾔,比如我们的汉语、英语、⽇语等
那⼈和计算机就是使⽤计算机语⾔进行交流的。
⽬前已知已经有上千种计算机语⾔,⼈们是通过计算机语⾔写的程序,给计算机下达指令,让计算机工作的,C语言就是其中的一种。更多的在上学时期也接触过JAVA,Pathon,C++。
很多人觉得c已经不如Java和pathon等其他语言,实则不然,简单来说,C语言是 计算机程序语言的基础,是实用的程序设计工具,学好C语言对你今后学习 JAVA 、C++、VB等可以打下良好的基础,因为这些语言大部分都是由C语言扩充或衍生而来的。
通过排名我们也可以看出来c语言的重要性:

2.c语言的发展史

1)发明B语言
1969年,贝尔实验室的肯·汤普森(Ken Thompson)与丹尼斯·里奇(Dennis Ritchie)一起开发了Unix操作系统。Unix是用汇编语言编写的,为了移植到其他计算机,汤普森就在BCPL语言的基础上发明了B语言。
2)发明C语言
丹尼斯·里奇和布莱恩·柯林汉(Brian Kernighan)又在B语言的基础上重新设计了一种新语言,这种新语言取代了B语言,所以称为C语言。
3)Unix系统使用C语言重写
整个Unix系统都使用C语言重写。此后,这种语言开始快速流传,广泛用于各种操作系统和系统软件的开发。
4)C语言的标准化
美国国家标准协会(ANSI)正式将c语言标准化,标志着c语言开始稳定和规范化。
5)至今
—直到今天C语言还是在广泛的使用,在计算机语言的排行榜上霸占前三名。

3.什么是编译和链接?

C语⾔是一门编译型计算机语言,C语言源代码都是文本文件,文本文件本身无法执行,必须通过编译器翻译和链接器的链接,生成⼆进制的可执行文件,可执行文件才能执行。
C语⾔是一门编译型的计算机语言,需要依赖编译器将计算机语⾔转换成机器能够执⾏的机器指令。
常见的C语言编译器
⽐如:msvc、clang、gcc 就是⼀些常见的编译器,当然也有⼀些集成开发环境 如:VS2022、
XCode、CodeBlocks、DevC++、Clion 等(注意这里是集成开发环境而不是编译器!)
我这里比较推荐VS,不过具体什么可以根据自己的条件和环境选择。

4.main函数

每个 C 语⾔程序不管有多少⾏代码,都是从 main 函数开始执⾏的, main 函数是程序的⼊⼝,
main 函数也被叫做:主函数 main 前⾯的 int 表⽰ main 函数执⾏结束的时候返回⼀个整型类
型的值。所以在 main 函数的最后写 return 0; 正好前后呼应。我们应该清楚这些含义,而不是单纯知道main(){return 0;}这样的固定格式。
同时main函数还有以下几点需要注意:

main函数是程序的入口

main函数有且仅有⼀个

即使⼀个项⽬中有多个.c⽂件,但是只能有⼀个main函数(因为程序的⼊⼝只能有⼀个)

5.关键字有哪些?

C语⾔中有⼀批保留的名字的符号,比如一些常见的: int (整形) if(判断)  return ,这些符号被称为保留字或者关键字。
关键字都有特殊的意义,是保留给C语⾔使⽤的。
程序员⾃⼰在创建标识符的时候是不能和关键字重复的。
关键字也是不能⾃⼰创建的。
C语⾔的32个关键字如下:
auto break case char const continue default do double else enum extern
float for goto if int long register return short signed sizeof static
struct switch typedef union unsigned void volatile while

6.字符和ASCII编码

在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号括起来的,如:'a','b','@'。 我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的⼆进制存储的呢?如果我们每个⼈自己给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为了方便大家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C 语⾔中的字符就遵循了 ASCII 编码的⽅式。大家可以搜一下。
我们不需要记住这个表,但是作为科班生,老师还是让我们记住一些特殊的,我在这里给大家列出:
字符A~Z的ASCII码值从65~90
字符a~z的ASCII码值从97~122
对应的大小写字符(a和A)的ASCII码值的差值是32
数字字符0~9的ASCII码值从48~57
换行  \n 的ASCII值是:10

7.C语言的字符串和\0

C语⾔中如何表⽰字符串呢?使⽤双引号括起来的⼀串字符就被称为字符串,如:"abc",就是⼀个字符串。字符串的打印格式可以使用%s 来指定,当然也可以直接printf输出。
C语⾔字符串中⼀个特殊的知识,就是在字符串的末尾隐藏放着⼀个 \0 字符,这个 \0 字符是字符串的结束标志。
对于字符串"abc",我们实际上看到了3个字符:a,b,c,但是实际上在末尾还隐藏⼀个 \0 的转义符, \0 是字符串的结束标志。所以我们在使⽤库函数 printf() 打印字符串或者 strlen() 计算字符串长度的时候,遇到 \0 的时候就自动停止了。一大堆的话很难理解的话我们来看一下代码:
上面是我用VS完成的一个小实例, 可以看到, a1 字符数组在打印的时候,打印了 a b c 后还打印了⼀些随机值,这就是 因为 arr1 在末尾的地⽅没有 \0 字符作为结束标志,在打印的时候没有停⽌。 但是 arr2 的打印就是完全正常的,就是因为 arr2 数组是使⽤字符串常量初始化的,数组中有 \0 作为结束标志,打印可以正常停止。这样理解起来是不是好很多。
sizeof和strlen的区别

1.sizeof是C语言中的一个单目运算符,用来计算数据类型所占空间的大小,单位为字节,在计算字符串大小时是包括\0在内的;而strlen是一个函数,用来计算字符串长度。

2.strlen()是一个函数,需要引用头文件#include <string.h>,求字符串长度,返回计算的字符串的实际长度,即不包括‘\0’在内的实际字符的长度

8.转义字符

在上⾯的代码中你看到 \n , \0 初学者可能不清楚是什么 。其实在字符中有⼀组特殊的字符是转义字符,转义 字符顾名思义:转变原来的意思的字符。比如0原来的含义就是0但\0就不是了,常见的转义字符有如下(有些不常用了解就好):
\? :在书写连续多个问号时使⽤,防止他们被解析成三字母词,不过在新的编译器上不存在这样的问题。
\' :用于表示字符常量'
\" :用于表示⼀个字符串内部的双引号
\\ :用于表示⼀个反斜杠,防止它被解释为⼀个转义序列符。
\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.
最近忙考试和课程设计好久没写,抽空写一篇,感觉又充实了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值