1.const指针
const 关键字 是个常量并且时只读
1.const int *p ===int const *p;
const修饰 *p;变量p值可以改变,但是不能利用指针修改指向空间中的值
2.int *const p;
const修饰p,即p值不能改变,但是利用指针变量p修改指向空间中的值,一定要初始话
3.const int *const p===int const *const p;
p和*p都不能变所以必须初始化
2.void
int *、double *、char * 转换为 void * 需要强制类型转换
void *转换为int *、double *、char *不需要强制类型转换
strcpy 拷贝字符串
memcpy 拷贝一段内存空间
3.函数指针和指针函数
1.指针函数
局部变量的地址不能返回,因为局部变量会随函数作用域结束被回收,虽然能够获得返回的地址,但地址对应的空间已经被回收过了
2.函数指针:
int (*Fun)(int a, int b) = NULL;
定义函数指针变量Fun,占8个字节空间,指向int返回值有2个int参数的函数
4.二级指针的使用场景
1.指针数组传参时:
char *str[5];
int Fun(char **ppstr, int len);
.2函数体内想修改函数体外指针变量值的时候,要传递指针变量的地址即二级指针
char *p = NULL;
int Fun(char **pp);
5.结构体
5.1结构体类型定义
struct 结构体名
{
数据类型1 成员变量1;
数据类型2 成员变量2;
数据类型3 成员变量3;
..
};
5.2结构体变量的定义
数据类型 变量名;
数据类型 *指针变量名;
5.3结构体变量的初始化
1.全部初始化:
struct student s = {"zhangsan", 'm', 19, 100};
2.局部初始化:
struct student stu =
{
.name = "lisi",
.score = 90,
};
5.4结构体成员变量的访问
. 结构体变量类型访问成员变量使用
-> 结构体指针类型访问成员变量使用
作业:
1.定义一个结构体包含年-月-日三个成员
struct date
{
int year;
int mon;
int day;
};
从终端接收年月日信息存放到结构体中,计算该天为该年的第几天?计算该年剩余多少天?打印年月日信息
2.封装一个函数,给定一个数字字符串转换成其对应的整形数 "123456" 123456 int MyAtoi(char *pstr);