学习目标:
嵌入式开发–C语言基础10
学习内容:
指针2
学习时间:
2024年4月28日
学习产出:
1.字符型数组和字符串的传参
char str[32] = {"hello world"};
int fun(char *pstr);
2.二级指针
指向一级指针变量的指针
3.void *指针
用来保存地址
void *p; //所有指针都是8个字节
void * -> int *、char *、double * 不需要强制类型转换
int *、char *、double * -> void * 需要强制类型转换
void * 作为函数参数,可以传入char *、double *、int *的指针,实现一个函数原型下的不同类型指针的传参
4.const指针
const == readonly
1.const int *p;
2.int const *p;
1和2是等价的,const 修饰 *p, p可以改变, *p不能改变只能使用指针指向的空间数据,不能修改此数据
3.int *const p;
const 修饰 p, p不可以改变, *p可以改变,一定要初始化,否则该指针为野指针
永远指向某个空间的指针(比如数组的数组名)
4.const int *const p;
5.int const *const p;
4和5是等价的,const 修饰p *p, p不可以改变, *p不可以改变,一定要初始化
5.数组指针和指针数组
1.数组指针:数组指针是指针,指针指向整个数组
数组指针:对一维数组名&,值不变,类型升级为指向整个数组的数组指针
对数组指针*,值不变,类型降级称为指向数组第一个元素的指针
a可以理解为int * ,但在以下两种情况下a不能理解为int *型
1.sizeof操作
2.&操作
&int * == int **
&a == int (*)[5]
2.指针数组:
指针数组是数组,数组的每个元素都是指针
存放字符串数组用二维数组
操作字符串数组用指针数组