C语言必须理清的概念2

1.6指针数组和数组指针

★指针数组

类型名 * 数组名[数组长度]

int *p[8];

★数组指针

类型名( * 数组名)[数组长度]

int (*p)[8];

P先与[]结合,说明p是一个数组,然后再与*结合说明数组p的元素是指向整型数据的指针,相当于定义了8个整型指针变量,用于存放地址单元。

b就是数组元素为指针的数组,本质是数组。

☆p先与*结合,是一个指针,指针指向有8个整型元素数组,p为指向数组首元素地址的指针,其本质是指针。

举例:

////

1.7指针函数和函数指针

指针函数:本质是函数,返回的是某种类型的指针

类型标识符 * 函数名 (参数表)

函数指针:本质是指针,指向的不是一般的变量,而是一个函数,每个函数都有一个入口地址,函数指针指向的就是函数的入口地址。

函数指针要与它所指向的函数具有相同类型。

用 函数指针名=函数名 的方式来引用函数。

1.8传值和传址

传值:函数调用过程中参数传递,把实参传递给形参,堆形参修改不会影响实参,对形参的修改只是修改实参的一个备份,不会影响到实参。

传址:函数调用过程中参数传递的地址,形参和实参公用一个空间,对形参修改会影响实参。

1.9递归和嵌套

递归:函数在调用的过程中自身即使主函数也是被调函数,如果在使用递归调用过程中没有停止条件,将会无限制的进行下去,直到程序崩溃。

在使用递归调用的时候,一定给一个停止条件。

嵌套:在一个函数中调用另外一个函数,不能在一个函数中定义另外一个函数。

//递归例子:猴子吃桃

10.1结构体

因为数组只能用来存储相同类型的数据,而我们时常需要将一些不同类型的元素放在一起,这就可以利用结构体,将这些元素类型封装在一起,得到一种新的自定义数据类型。

struct 结构体名

{

成员类型   成员名;

};

结构体为它的每一个成员都分配存储空间;

函数的返回类型可以定义结构体等复合类型。

结构体所占用的内存大小,为所有成员各自占用的内存大小之和。

1.11共用体

一种构造类型,由基本数据结构组成。

占用的内存大小由其成员中占用内存最大的那个决定,所有成员占用同一个起始地址和同一段内存空间,在某一时刻,只能存储某一成员的信息。

在使用结构体和共用体进行嵌套的时候,注意其中成员的引用方法,从最外层变量开始引用他的成员,如果它的成员是共用体或结构体的变量,那直接以共用体或结构体类型变量的方式引用它的成员变量。

1.12枚举

一一列举,将具有相同属性的一类数据一一列举出来。

enum  枚举类型名

{

标示符1 【=整形常熟】;

}

1.13位域

有时候并不需要占用完整的字节,只需要占一个或几个二进制位。

位域:把存储空间中二进制划分为几个不同的区域,并说明每个区域,每个区域有一个域名,允许在程序中按域名进行操作。

原文地址:https://www.cnblogs.com/heri/p/2862830.html