1.二级指针:
1.函数体内修改函数体外指针变量的值
2.指针数组的数组名是指向数组第一个元素的指针即二级指针
C语言中:
指针数组传参二级指针和长度
二维数组传参数组指针和长度
char *pstr[5];
int fun(char **ppstr, int len);
char str[5][32];
int fun(char (*p)[32], int len);
2.函数指针和指针函数:
指针函数是函数,函数的返回值是指针
int *fun(int x, int y);
函数指针是指针,指针指向一个函数
int (*p)(int, int);
3.指针函数:
返回值为指针的函数
注意:
1.指针函数不能返回局部变量的地址
4.void *指针
void 缺省类型
void *只表示类型地址,没有指向空间大小的含义
主要用户函数传参和返回值使用
void a; //错
void *p = 0x2000; //对
char *p = 0x2000;
double *p = 0x2000;
int *p = 0x2000;
注意:
1.char *、int *、double * 转换为void *时需要强制类型转换
2.void *转换为char *、int *、double *时不需要强制类型转换
5.函数指针:
函数指针是指针,占8个字节空间,指向函数
构造数据类型:
1.数据类型
1.基本数据类型: short int long float double
2.构造数据类型: 结构体、共用体(联合体)、枚举
2.结构体:
1.结构体类型的定义:
struct 结构体名
{
数据类型1 成员变量1;
数据类型2 成员变量2;
数据类型3 成员变量3;
...
};
2.结构体变量的定义:
数据类型 变量名;
3.结构体变量的初始化:
1.全部初始化:
struct student s = {"zhangsan", 'm', 19, 100};
2.局部初始化:
struct student s = {
.name = "zhangsan",
.score = 100,
};
4.结构体成员的访问:
. :结构体变量类型访问成员变量
-> :结构体指针类型访问成员变量
结构体访问成员变量最终的类型由成员变量的类型决定