学习数据结构基础(c语言):
一、什么是分支(if/lese、switch),循环(for、while、do while)?
程序的三种结构:顺序,分支,循环
1、顺序 :按照先后顺序执行
比如:int a=2; ①
double b =3.0; ②
先执行第①步,然后执行第②步。
2、分支:可以使用 if 、 switch 实现分支结构
if语句
if (条件) {
// 条件为真时执行的代码
}
else {
// 条件为假时执行的代码
}
switch语句
switch (表达式) {
case 值1:
// 当表达式的值等于值1时执行的代码
break;
case 值2:
// 当表达式的值等于值2时执行的代码
break;
...
default:
// 当表达式的值与以上所有值都不相等时执行的代码
break;
}
? 条件运算符
公式:条件表达式 ? 表达式1 :表达式2
条件表达式结果是:真或假
如果条件表达式结果为真,则运算结果为表达式1的结果;
如果条件表达式结果为假,则运算结果为表达式2的结果;
3、循环:可以使用 for 、 while 、 do while 实现循环结构
while语句
while (条件) {
// 循环体代码
}
//只要条件为真,就会一直执行循环体中的代码。
do while语句
do {
// 循环体代码
} while (条件);
//先执行一次循环体中的代码,然后再判断条件是否为真,如果为真则继续执行循环体,否则退出循环。
for语句
for (初始化; 条件; 更新) {
// 循环体代码
}
//初始化一次,然后判断条件是否为真,如果为真则执行循环体,并在每次执行完循环体后更新变量的值,再判断条件是否为真,直到条件为假才退出循环。
二、什么是数组?
1、数组的定义
数组:一些具有相同类型的数据的集合
2、一维数组的形式
形式:类型名 数组名 【数组长度】
类型名:指定数组中每个元素(数据)的类型(int、double、float.......)
数组名:数组变量的名称,一个合法的标识符
数组长度:设定数组大小,即这个数组能够容纳的元素的个数
3、一维数组的初始化
第一种:数组长度和初始化的元素的个数相同。int a[3]={1,2,3};
第二种:数组长度比初始化元素的个数要小。后面的自动初始化为0。int a[4]={1,2} 第3,4个为0
第三种:系统自动给予数组长度:int a[]={1,2,3,4,5} 数组长度自动定义为5
第四种:报错,初始化数据的个数大于数组长度,会自动报错例如:int [2]={1,2,3,4}
三、什么是函数?
1、函数的定义
C语言中的函数是一段代码的封装,它可以执行特定的任务并返回一个值。函数在程序中能够重复使用,可以提高代码的可读性和重用性。
2、函数的组成
函数由函数头和函数体组成,具体由下面4部分组成
例如 int add(int a,int b){
}
(1)返回类型:指明函数执行完毕后返回的数据类型。可用的返回类型包括整型、浮点型、字符型、指针等。例如上面的第一个int。并且函数体中有return语句,但是函数也是有可能没有返回值的,这个时候返回类型为void。
(2)函数名:用于在程序中调用函数的标识符。
(3)参数列表:函数可能接受零个或多个参数,参数用于传递数据给函数,供函数使用。参数列表中可以指定参数的类型和名称。
(4)函数体:实际执行函数任务的代码块,由一对花括号{}
包围。
3、函数的分类
(1)库函数:C语言中的库函数是已经编写好的可供开发者使用的函数,它们提供了一系列常用和功能强大的操作,涵盖了各种任务和领域,如字符串处理、数学计算、文件操作、内存管理等。
具体有:
字符串处理函数:包括strlen、strcpy、strcat、strcmp等函数,用于对字符串进行常见的操作,如求字符串长度、拷贝字符串、连接字符串、比较字符串等。
数学函数:包括abs、sqrt、pow、sin、cos等函数,用于进行数学计算,如取绝对值、计算平方根、求幂运算、三角函数等。
文件操作函数:包括fopen、fclose、fread、fwrite等函数,用于打开、关闭、读取和写入文件,进行文件相关的操作。
内存管理函数:包括malloc、calloc、realloc、free等函数,用于动态分配和释放内存,进行内存的管理和操作。
时间和日期函数:包括time、localtime、strftime等函,用于获取和处理时间数和日期,进行时间和日期相关的操作。
库函数的使用:要使用库函数,需要包含相应的头文件,并将函数调用放在自己的代码中。
(2)自定义函数,用自己写的函数以达到某一要求,如add等等。
在C语言中,可以使用自定义函数来组织和重用代码。自定义函数能够接收输入参数并返回一个值(如果需要),并可以在程序中的任何地方被调用。
四、什么是指针、什么是地址?
1、什么是地址
在计算机运行时,数据会存放在内存中,内存会以字节为单位划分为多个存储空间,并且为每个字节默认设置一个对应的编号,这个编号就是地址。
地址只是计算机规定的一个值,所以不会占用内存的存储空间,地址显示的长度会根据系统及编译器的位数确定。64位编译器显示的地址为16个16进制数,32位编译器显示的地址为8个16进制数。
在计算机运行时,内存会动态分配存放数据的位置,所以同样的数据在每次运算时存放的地址可能会产生变化。
2、获取地址值
只有通过获取数据的地址才能对内存中的数据进行操作。在C语言中,使用取地址符&获取内存中数据的地址。最典型的取地址的应用就是使用库函数scanf()。
例如
scanf_s("%d",&a)
printf("%p",&a)
%p占位符指定输出的数据为地址,不可以用%x占位符代替。
3、什么是指针
指针可以说是C语言的灵魂,指针指代数据存放在内存中的地址。每个地址代表一个数据。
(1)声明指针
格式:基类型 *变量名 例如int *p;
这里的基类型,和我们之前学习的数据类型int有所不同。
int a 和int *p中int的不同
数据类型:用于声明存放数据的变量 代表数据的类型是int
基类型:用于声明指针变量 代表的是数据存放的地址所指向的数据是int型
(2)指针变量赋值
三种方式:
第一种:变量名赋值
例如:
int a = 9;
int *p;
p = &a;
第二种:指针变量赋值
例如:
int i = 8;
int *p = &i;
int *q;
q = p;
第三种:赋空值
#include<stdio.h>
int *p;
p = NULL;
(3)动态分配存储空间
在C语言中,函数malloc()和calloc()用于动态分配存储空间。使用这两个函数时,都要引用头文件#include<stdlib.h>或#include<malloc.h>。
a:malloc()函数:函数malloc()只有一个参数。该函数可以动态申请一个连续的存储空间,并返回该存储空间的首地址。
格式:
(基类型*)malloc(size); size为存储单元的大小
(基类型*)malloc(sizeof(数据类型)*number); 第二个星号为乘法运算符 ,number为申请存储单元的个数
例如: int *p=(int*)malloc(4)
int *p=(int*)malloc(sizeof(int)*4)
b:calloc()函数:函数calloc()有两个参数:第一个参数规定申请几个单位存储空间;第二个参数规定申请单位存储空间大小。
格式:
(基类型*)calloc(number,sizeof(数据类型));、
例如:
int *p=(int*)calloc(1,sizeof(int));
c:free()函数:当对应的数据使用完后,就要使用函数free()回收动态申请的存储空间,把之前动态申请的存储空间返还给系统。函数free()要与函数malloc或calloc()配对使用。
格式:
free(指针变量名)
例如:
int *p;
free(p);
五、什么是struct结构体?
1、什么是结构体
struct 结构体是 C 语言中的一种用户自定义的数据类型,可以用于组合多个不同类型的变量为一个实体,并以此为基础定义新的数据类型。关键字为struct。和其他的类型基础数据类型一样,例如int型,char型,区别是结构体可以做出你想要的数据类型。
2、定义结构体
格式:
struct 结构体名称 {
类型 成员1;
类型 成员2;
// 更多成员定义
};
例如:
struct student{
int id;
char name[20];
float score;
};
3、结构体的空间分配
在C语言中,结构体(struct)占用的内存空间取决于其内部包含的成员变量的大小和对齐方式。对于一个结构体来说,其内存大小将是其各个成员变量所占内存大小的总和,再加上由于对齐所增加的填充字节。
标签:循环体,函数,int,地址,数组,数据结构,Day,存储空间,408 From: https://blog.csdn.net/m0_64601600/article/details/145269041