C语言基础

331 阅读7分钟

文章目录

一、C语言基础

1、引入依赖文件

#include<依赖文件名称> //例如stdio.h

2、主函数入口

int main(){
	//程序执行模块
	return value;//程序返回值
}

3、变量定义

int	变量;//整型白变量
short 变量;//短整型
long 变量;//长整型
long long 变量;//长长整型
char 变量;//字节类型
float 变量;// 浮点型

4、输入输出

printf("提示字段");//控制台输出
scanf("规范字符",存储变量地址);//控制台输入

5、基本运算符号

+:加法
-:减法
*:乘法
/:除法
%:模运算
math.sqrt():开方
^:乘方
&:取地址符

二、C语言的选择结构

1、三元表达式

在这里插入代码条件?条件为真时执行:条件为假时执行;

2、IF结构:

if(condition){
	//condition 为true时执行的代码
}

3、IF-ELSE结构:

if(condition){
		//condition 为true时执行的代码
	}else{
		//condition为false时执行的代码
}

4、多重IF结构:

if(condition1){
	//condition1为true时执行的代码
	}else if(condition2){
		//condition2为true时执行的代码
	}else if(condition3){
		//condition3为true时执行的代码
	}else{
	//上述条件不满足时执行代码
}

5、嵌套IF结构

if(condition1){
	//执行condition1为true时执行的语句
	if(condition2){
		//condition1和condition2均为true时执行的语句
	}else{
		//condition1为true且 condition2为false时执行的语句
	}
	if(condition3){
	//condition1和condition3为true时执行的代码
	}else if(condition4){
		//condition1和condition4为true时执行的代码
	}else if(condition5){
		//condition1和condition5为true时执行的代码
	}else{
		//condition1为true且condition3、condition4和condition5为false时执行的代码
}
}

6、Switch_case结构

Switch (condition){
	case value1:
		//condition值等于value1时,执行代码
		break; //退出Switch-case循环
	case value2:
		//condition值等于value2时,执行代码
		break; //退出Switch-case循环
	case value3:
		//condition值等于value3时,执行代码
		break; //退出Switch-case循环
	default//上述的value值与condition值不同
		break; //退出Switch-case循环
}

三、C语言的循环结构

1、for循环

for(初始化变量;边界条件;变化量){
	//当初始化变量条件满足边界条件时,执行该模块代码
}

2、while循环(当型循环)

while(条件){
	//当满足条件时,就执行该模块代码
}
PS:
while(1){
	//死循环
}

3、do-while循环(直到型循环)

do{
	//运行该模块,直到不满足条件为止
}while(condition)

四、C语言数组

1、数组定义及其初始化

数组的建立就是操作开辟一个连续的内存空间,其元素之间按照下标的递增紧密的排列在内存的连续空间里。

//静态初始化
int num[1000]={0};//[]内为数组个数,{}内为定义数组的数据,数组下标是以0开始的

2、数组类型

不同于变量类型,数组也有对应的数组类型。

int 数组名[初始个数]={初始值值之间用,号进行分割};//整型数组
char 数组名[初始个数]={初始值值之间用,号进行分割};//字符数组
double 数组名[初始个数]={初始值值之间用,号进行分割};//双精度数组

3、动态建立数组

对于静态数组,开发者需要每次进行内存空间估计,当内存不够,会导致数组溢出,因此动态建立数组的方法应运而生。

//首先初始化数组
int num[]={};
//对数组内存空间进行动态开辟
num = (double *) malloc(n * sizeof(double));	

五、C语言函数及其函数模块化

1、函数作用

对于一个,我们会对一些指令序列会进行多次运行,为了能够提供程序运行效率以及减少开发者的工作量,因此提出函数的概念。

2、public 与privite

我们从单词的字面的意思来理解,public:公众的,private:私有的。这两个变量分别定义公共模块与私有模块。公共模块的意思就是,该模块的生存域为整个工程。私有模块就是指该模块的生存域为该工程文件。

3、函数模块定义

返回值类型 模块名称(传入参数){
	//该函数模块执行代码模块
	return  返回值;//若定义返回值类型为void,则不需要返回值
}

4、函数模块调用

建立函数模块为了能够运算得到结果,因此,我们需要在主函数中调用我们定义的模块。

int main(){//主函数
	接收函数值变量=函数名称(传入函数变量);
}

六、C语言指针

1、指针的定义及其作用

有句俗话就是:C语言的核心就是指针。那么什么是指针呢?简单来说,指针就是一个存储一个内存地址的容器,指向内存空间的某个区域。

2、指针类型

和变量类型类似,指针也有很多类型

int *pa,*pb;//定于int指针
char*pa;//定义char指针
float *pf;//定义float指针
struct*next //结构体指针

3、申明指针与释放指针

使用指针时,需要进行事前申请。注意分配malloc()函数要和free()函数成对出现。

int *pi = (int* ) malloc (sizeof(int));

七、数据结构定义(C语言、C++)

1、顺序表定义(静态)

#define MaxSize //定义线性表的最大长度
typedef struct{
	ElemTyoe data[]; //顺序表元素
	int length; //顺序表当前长度
}sqlist;

2、顺序表定义(动态)

#define InitSize //定义线性表的最大长度
typedef struct{
	ElemTyoe *data; //顺序表元素
	int MaxSize,length; //顺序表最大长度和个数
}sqlist;

C语言初始化语句

L.data=(ElemType *)malloc(Sizeof(EleType)*InitSize);

C++语言初始化语句

L.data=new ElemType[InitSize];

3、定义单链表节点

typedef struct LNode{
	ElemTyoe data; //数据域
	struct LNode *next; //指针域
}LNode,*LinkList;

创建头结点

L=(LinkList)malloc(sizeof(LNode));

创建新节点

L=(LNode*)malloc(sizeof(LNode));

4、双链表节点定义

typedef struct DNode{
	ElemTyoe data; //数据域
	struct DNode *prior,*next; //指针域
}DNode,*DinkList;

创建头结点

L=(DinkList)malloc(sizeof(DNode));

创建新节点

L=(DNode*)malloc(sizeof(DNode));

5、静态链表节点定义

#define MaxSize //定义线性表的最大长度
typedef struct{
	ElemTyoe data[]; //数据域
	int next; //指针域
}SLinklist[MaxSize];

6、栈的节点定义

#define MaxSize //定义线性表的最大长度
typedef struct{
 ElemTyoe data[MaxSize]; //存放栈中元素
 int top; //栈顶元素
}SqStack;

7、链栈的节点定义

typedef struct LinkNode{
	ElemTyoe data; //数据域
	struct LinkNode *next; //指针域
}*Linkstack;

8、队列的节点定义

#define MaxSize //定义线性表的最大长度
typedef struct{
 ElemTyoe data[MaxSize]; //存放队列中元素
 int front,rear; //存放数据的先后关系
}SqQueue;

9、链队列的节点定义

typedef struct {
	ElemTyoe data; //数据域
	struct LNode *next; //指针域
}LinkNode;

typedef struct {
	LinkNode *front,*rear;
};

10、二叉树节点定义

typedef struct BiTNode{
	ElemTyoe data; //数据域
	struct BiTNode *lchild,*rchild; //指针域
}BiTNode,*Bitree;

11、线索二叉树

typedef struct ThreadNode{
	ElemTyoe data; //数据域
	struct ThreadNode *lchild,*rchild; //指针域
	int ltag,rtag;
}ThreadNode,*Threadtree;

12、双亲法存储结构

#define MAX_TREE_SIZE
typedef struct{
	ElemType data;
	int parent;
}PTNode;