如题所述
C语言基础知识总结大全:
1、入门程序:
2、数据类型:
(1)基本数据类型:整型:int4个字节、字符型:char1个字节、实型(浮点型)。
(2)构造类型:枚举类型、数组类型、结构体类型、共用体类型。
3、格式化输出语句
%d:十进制整数。
%c:单个字符。
%:字符串。
%小数。
4、常量
值不发生改变的量成为常量。
定义字符常量(注意后面没有。)。
5、运算符
5.1.算数运算符:+,-,*,/,%,++,--。前++/--,先运算,再取值.后++/--,先取值,再运算。
5.2.赋值运算符:
5.3.关系运算符。
5.4.逻辑运算符。
5.5.三目运算符:
6、水仙花数计算
输出所有三位数的水仙花数字。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数,如:153就是一个水仙花数,153=111+555+333。
7、打印正三角形的。
8、臭名远扬的goto语句。
9、形参与实参
形参:形参是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。
实参:实参是在调用时传递该函数的参数。
函数的形参和实参具有以下特点:
形参只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值等办法使实参获得确定值。
在参数传递时,实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。
10、函数返回值注意
注意:void函数中可以有执行代码块,但是不能有返回值,另void函数中如果有return语句,该语句只能起到结束函数运行的功能。其格式为:return。
11、递归。
12、变量存储类别。
12、(1)生存周期划分存储方式
C语言根据变量的生存周期来划分,可以分为静态存储方式和动态存储方式。
静态存储方式:是指在程序运行期间分配固定的存储空间的方式。静态存储区中存放了在整个程序执行过程中都存在的变量,如全局变量。
动态存储方式:是指在程序运行期间根据需要进行动态的分配存储空间的方式。动态存储区中存放的变量是根据程序运行的需要而建立和释放的,通常包括:函数形式参数。自动变量。函数调用时的现场保护和返回地址等。
(2)存储类型划分。
C语言中存储类别又分为四类:自动(auto)、静态(static)、寄存器的(register)和外部的(extern)。
用关键字auto定义的变量为自动变量,auto可以省略,auto不写则隐含定为“自动存储类别”,属于动态存储方式。
用static修饰的为静态变量,如果定义在函数内部的,称之为静态局部变量。如果定义在函数外部,称之为静态外部变量。
注意:静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放。静态局部变量在编译时赋初值,即只赋初值一次。如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。
为了提高效率,C语言允许将局部变量的值放在CPU中的寄存器中,这种变量叫“寄存器变量”,用关键字register作声明。
注意:只有局部自动变量和形式参数可以作为寄存器变量。一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量。局部静态变量不能定义为寄存器变量。
用extern声明的变量是外部变量,外部变量的意义是某函数可以调用在该函数之后定义的变量。
13、内部函数外部函数!
在C语言中不能被其他源文件调用的函数称为内部函数,内部函数由static关键字来定义,因此又被称为静态函数,形式为:
14、static[数据类型]函数名([参数])。
这里的static是对函数的作用范围的一个限定,限定该函数只能在其所处的源文件中使用,因此在不同文件中出现相同的函数名称的内部函数是没有问题的。
在C语言中能被其他源文件调用的函数称为外部函数,外部函数由extern关键字来定义,形式为:
extern[数据类型]函数名([参数])。
C语言规定,在没有指定函数的作用范围时,系统会默认认为是外部函数,因此当需要定义外部函数时extern也可以省略。extern可以省略。14.数组数组:一块连续的,大小固定并且里面的数据类型一致的内存空间,数组的声明:数据类型数组名称[长度n]。
数据类型数组名称[长度n]={元素1,元素2,元素3,}。
数据类型数组名称={元素1,元素2,元素3,}。
数类类型数组名称[长度n]。数组名称=元素1。数组名称=元素2。注意:1、数组的下标均以0开始。2、数组在初始化的时候,数组内元素的个数不能大于声明的数组长度。
3、如果采用第一种初始化方式,元素个数小于数组的长度时,多余的数组元素初始化为0。4、在声明数组后没有进行初始化的时候,静态(static)和外部(extern)类型的数组元素初始化元素为0,自动(auto)类型的数组的元素初始化值不确定。
15、数组遍历
数组的冒泡排序:
冒泡排序的思想:相邻元素两两比较,将较大的数字放在后面,直到将所有数字全部排序。
字符串与数组在C语言中,是没有办法直接定义子字符串数据类型的,需使用数组来定义所要的字符串,形式如下:
char字符串名称[长度]=“字符串内容”。
char字符串名称[长度]={'字符串1','字符串2','字符串n','\0'}。
注:中的长度可以省略不写。
采用第二种方式最后一个元素必须是'\0',表示结束。
第二种方式不能写中文!。输出字符串时,要使用:printf(“%s”,字符数组名)。或puts(字符数组名)。
16、字符串函数
strlen(s):获取字符串s的长度。
strcmp(s1,s2):比较字符串。比较的时候会把字符串转换成ASCII码再进行比较,返回结果为0表示s1和s2的ASCII码值相等,返回结果为1表示s1比s2的ASCII码大,返回结果为-1表示s1比s2的ACSII码小。
strcpy(s1,s2):字符串拷贝。s2会取代s1中的内容。
strcat(s1,s2)将s2拼接到s1后面。注意:s1的length要足够才可以!
atoi(s1)将字符串转为整数!
17、多维数组
数据类型数组名称[常量表达式1]...[常量表达式n]。
多维数组的初始化与一维数组的初始化类似也是分两种:
数据类型数组名称[常量表达式1][常量表达式2][常量表达式n]={{值1,值n},{值1,值n},{值1,..,值n}}。
数据类型数组名称[常量表达式1][常量表达式2]...[常量表达式n]。数组名称[下标1][下标2][下标n]=值。
多维数组初始化要注意以下事项:
采用第一种始化时数组声明必须指定列的维数。因为系统会根据数组中元素的总个数来分配空间,当知道元素总个数以及列的维数后,会直接计算出行的维数。
采用第二种初始化时数组声明必须同时指定行和列的维数。
18、多维度数组的遍历。
使用嵌套循环。
注意:多维数组的每一维下标均不能越界!
19、结构体
C数组允许定义可存储相同类型数据项的变量,结构是C编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。
结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性:
Title。
Author。
Subject。
Book ID。
20、共用体。
共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。
21、指针。
22、文件读写。
23、排序算法。
十大经典排序算法(动态演示+代码)。
24、查找算法。
九种查找算法。
25、面试知识。
C语言与C++面试知识总结。
26、字符串操作。
字符串操作的全面总结。
27、C语言常用标准库解读。
C语言常用标准库解读。
28、C语言最常用的贪心算法。
C语言最常用的贪心算法就这么被攻克了。
29、常见的C语言内存错误及对策。
常见的C语言内存错误及对策。
30、C语言实现面向对象的原理。
C语言实现面向对象的原理。
31、C语言/C++内存管理。
看完这篇你还能不懂C语言/C++内存管理。
32、再谈C语言指针。
再谈指针:大佬给你拨开C指针的云雾。
C语言函数指针之回调函数。
C语言指针详解(文末有福利)。
33、C语言预处理命令。
长文详解:C语言预处理命令。
34、C语言高效编程与代码优化。
C语言高效编程与代码优化。
35、C语言结构体。
C语言之结构体就这样被攻克了!值得收藏。
36、原码,反码,补码详解。
原码,反码,补码详解。
37、C语言宏定义。
简述C语言宏定义的使用。
38、c语言之共用体union、枚举、大小端模式。
c语言之共用体union、枚举、大小端模式。
C语言可以零基础入门,它的语法是很多高级编程语言的基础,比如说Java、C++。并且起到承上启下的作用,向上可以学习高级编程语言,向下可以学习计算机组成原理、操作系统等等偏基础的计算机基础知识。
书籍。
第一本书《阿哈C语言》的写书风格个人认为比较风趣幽默,对于培养兴趣,基础学习还是很不错的。
《C程序设计语言》,机械工业出版社,作者Brian W.Kernighan/(美)Dennis M.Ritchie。C语言之父写的,入门经典书籍。
《C Primer Plus》,人民邮电出版社,作者Stephen Prata。可以作为C语言工具书,也可以作为入门,内容循序渐进,能够锻炼编程思想。
《C和指针》深入了解指针,看完以后对指针不再害怕。
《C陷阱与缺陷》正如书上所说,“本书所揭示的知识,至少能够帮助你减少C代码和初级C++代码中90%的Bug”,看完后可以避免C语言开发的一些坑。