2026/07/27 C语言( 基本概念 )

一、程序入口

C语言是一门面向过程的编程语言,面向过程其实是一种解决问题的思想,这个过程指的是用户在解决某个问题时,按照某种逻辑关系把这个问题拆分为很多小问题,把每个小问题按照顺序单独解决,最终整个问题也就得到解决,可以理解为“大事化小,小事化了”的原则。

C语言程序的基本单位是函数,也就是说一个程序是由一个主函数以及若干个子函数组成的,主函数的名字是固定的,叫做main函数,用户不能修改,main这个单词翻译成中文具有主要的,最重要的意思,所以main函数才会作为程序的入口,也就是说程序是按照main函数中语句的先后顺序执行的。一个程序的执行顺序和main函数所在的位置无关,哪怕是main函数写在文件最后,程序也是从main函数开始运行。

面向过程思想采用的是自顶向下的设计原则,所以对于程序而言,过程的开始和结束就非常重要,在C语言标准中,就规定了C语言程序是顺序执行的,并且程序的开始必须是main函数,可以没有参数,也可以有两个参数。如下:
(1)

int main(void)
{......}

(2)

int main(int argc,char *argv[])
{......}

argc的值应该是非负整数。
argv数组中的每一个元素都是一个指向字符串的指针。字符串应该由主机环境传递给main函数,数组中第一个元素的字符串指的是程序的名字,后续元素才是传递给程序的参数

二、程序结束

另外可以看到标准中规定main函数需要具有一个int型的返回值,int指的是整型数,其实是英文单词integer的缩写,也是C语言中的关键字之一,也是常用的基本数据类型之一。

main函数的返回值会作为exit函数的参数,exit函数可以导致程序正常终止,且只能调用一次。exit的参数是0,则表示程序正常终止;exit的参数非0,则表示程序异常终止;(exit的参数会提供给当前程序的父进程。)

在程序的任意位置调用exit(0),程序在执行到该位置时会立刻终止。
只有在main函数中调用return 0;程序在执行到该位置时会立刻终止。

三、函数调用

C语言程序的基本单位是函数,程序是由一个主函数以及若干个子函数组成的,对于主函数而言,名称是固定的不能修改,功能就是作为程序的入口,但是对于子函数而言则不同。

子函数指的是了程序中除了主函数之外的其他函数,子函数的类型一般有两种:一种是库函数,另一种是用户自定义函数。

库其实就是函数的集合,由官方(ISO、ANSI、GNU)发布的函数库也被称为标准库(Standard Library),当然库的发布者也可以是组织、公司或者个人,不过这些函数库有的是开源免费的(做人无私奉献),有的是商业收费的(知识就是金钱),所以这些库也被称为第三方库。
用户如果调用库函数,则必须在源文件(xxx.c)中包含库的索引,就是头文件(xxx.h)。

header file指的是头文件,可以理解为是一个饭馆的菜单,在编写的时候需要包含函数对应的头文件,目的是让编译器可以去对应的函数库中找到该函数。
头文件不是必须包含,只有调用了函数库中的函数接口,才需要包含头文件!
一般官方提供的函数库都已经在系统路径中能够是存在的,所以用户需要使用<>包含头文件,就可以让编译器找到对应的函数接口。

< xxx.h > :编译器只去系统指定路径中查找该头文件,如果未找到,则编译器进行错误提示。

“ xxx.h ” :先去当前路径中查找头文件,未找到再去系统路径中查找,还未找到则报错提示。

四、C语言的常量变量

(1)常量
常量指的是在程序运行期间值不会发生改变的量,一般使用的数字,比如3.14用来表示圆周率,一般情况下,用户都是用通过宏定义的方式来实现常量的设计,宏定义其实就是简单的文本替换,在预处理阶段预处理器会把程序中的宏定义进行展开。C语言中规定宏定义使用预处理指令 #define 来进行设计。

(2)变量
变量指的是在程序运行期间值可能发生变化的量,用户可以根据实际需要来向内核(kernel)申请一块存储单元,并对这块存储单元进行命名,然后用户可以随时修改存储单元中的数据。申请的存储单元的大小可以通过C语言中的数据类型进行指定。

命名规则
变量和常量也被称为标识符,对于标识符的命名必须遵循规则:标识符是由字母、数字、下划线以及美元符号$组成,并且标识符的第一个字符只能是字母或者下划线。为了防止二义性出现,C语言标准规定不可以把系统保留字,以及程序中已经存在的函数名称、以及用户已经定义出来的标识符名称作为新的标识符名称(同一个作用域内不能)。
另外:C语言的标识符是区分大小写,并且作为用户而言,标识符的命名应该是有意义的!!!

五、C语言的数据类型

C语言中提供了一些关键字,专门用于表示数据的类型,其实就是用于表示要申请的内存空间的大小。

(1)字符型(32位系统下数据宽度是1字节)

C语言标准中提供了一个关键字char,其实是character单词的缩写,表示字符的意思,用于存储字符,C语言标准中用单撇号’ ’表示字符。C语言标准中关于字符的种类有两种:普通字符 and 转义字符,对于ASCII码表中转义字符需要使用 ‘\0’ ‘\r’ ‘\n’进行表示,代表字符具有特殊的意义。

C语言不支持二进制输入,但是C语言支持八进制、十进制、十六进制。即语句char a=00000001是错误的

(2)整数型(32系统下数据宽度是4字节)

C语言标准中使用关键字int表示整数,关键字int的英文单词是integer,对应的中文具有整数的含义,也就意味着存储单元所能存储的整数范围比较广泛。

C语言标准规定了用户可以采用不同的进制来表示数据,常用的进制有八进制、十进制以及十六进制,并且为了区分这三种进制,所以规定每种进制都有对应的前导符(前缀),规定八进制的前缀以0表示,比如064,规定十六进制的前缀以0x/0X表示,比如0x64。

(3)短整型(32系统下数据宽度是2字节)

C语言标准中规定使用关键字short来表示短整型,一般短整型的全称是short int,只不过写程序的时候可以只写short即可。

(4)长整型(32系统下数据宽度是4字节)

C语言标准中规定使用关键字long来表示长整型,一般长整型的全称是long int,只不过写程序的时候可以只写long即可。

(5)长长整型(32系统下数据宽度是8字节)

C语言标准中规定使用关键字long来表示长整型,但是长长整型是使用long long来表示。

(6)浮点型

数据有整数和小数之分,一般情况下处理的数据也是具有小数的,所以C语言标准中规定使用关键字float来表示单精度浮点数,单精度浮点型占4字节,另外C语言标准中也提供了另一个关键字double用来表示双精度浮点数,double占8字节,其实C语言也提供了一种类型long double,该类型占16字节

C语言中一般表示浮点数有两种方案:十进制形式 or 指数形式,两者的具体区分如下所示

十进制形式
十进制形式是采用整数+小数的组合表示浮点数,比如3.14 、5.0 ,基本上也是最常用的方案。

指数形式
指数形式指的是采用以10为底的形式表示浮点数,比如 3.14 * 10^2 ,但是在编写程序的时候采用英文半角输入法进行设计,这种输入法是不支持输入上标或者下标,所以C语言规定采用字符e或者E来表示以10为底的指数,比如3.14E2 。

注意:C语言标准中规定字符e/E的后面必须是整数,另外字符e/E的前面必须有数字!!!!!!

(7)字符串

字符串是表示某种含义的一个字符序列,字符串在内存是需要一块连续的内存空间进行存储,C语言中规定字符串使用双引号””表示,并且规定字符串的结束标志是’\0’,但’\0’不需要用户手动添加,系统会自动在一个字符串的末尾添加’\0’。

(8)布尔型

用户有时候需要在程序进行判断,在C89标准中,用户如果想要判断某种条件是否成立,一般是定义一个整型变量,然后利用数字0和数字1来表示条件是否成立,用户就可以把变量作为一个标志位使用。

在C99标准可以使用布尔型来表示真假两种情况,头文件stdbool.h有相关描述,在头文件中定义了三个宏,分别是bool、true以及false。

C语言标准中提供了两个关键字 signed && unsigned用于修饰整数,unsigned表示无符号,signed表示有符号,C语言中的signed修饰符是隐式声明,也就是用户定义整型变量的时候如果没有特别强调,则整型变量默认是有符号的。
用户如果要存储无符号的整数,则必须定义变量必须显式声明变量是无符号的(unsigned)。

posted @ 2026-07-27 22:40  !城北徐公.!  阅读(14)  评论(0)    收藏  举报