字符型数组和字符串的传参:
char str[32] = {"hello world"};
int fun(char *pstr);
字符串遍历:
while (str[i] != '\0')
{
i++;
}
while (*p != '\0')
{
p++;
}
2.二级指针:
指向一级指针变量的指针
3.void *指针:
用来保存地址
void * -> int *、char *、double * 不需要强制类型转换
int *、char *、double * -> void * 需要强制类型转换
void * 作为函数参数,可以传入char *、double *、int *的指针,实现一个函数原型下的不同类型指针的传参
4.const指针:
1.const int *p;
2.int const *p;
3.int *const p;
4.const int *const p;
5.int const *const p;
1和2是等价的
const 修饰 *p, p可以改变, *p不能改变
只能使用指针指向的空间数据,不能修改此数据
3
const 修饰 p, p不可以改变, *p可以改变,一定要初始化,否则该指针为野指针
永远指向某个空间的指针(比如数组的数组名)
4和5是等价的
const 修饰p *p, p不可以改变, *p不可以改变,一定要初始化
5.数组指针和指针数组:
1.数组指针:
数组指针是指针,指针指向整个数组
数组指针:对一维数组名&,值不变,类型升级为指向整个数组的数组指针
对数组指针*,值不变,类型降级称为指向数组第一个元素的指针
int a[5] = {1, 2, 3, 4, 5};
a可以理解为int *
注意:
在以下两种情况下a不能理解为int *型
1.sizeof操作
2.&操作
&int * == int **
&a == int (*)[5]
2.指针数组:
指针数组是数组,数组的每个元素都是指针
int *a[5]:定义一个数组,数组名为a,有5个元素,每个元素为int*型
存放字符串数组用二维数组
操作字符串数组用指针数组
嵌入式学习第十一天
最新推荐文章于 2024-09-14 22:25:23 发布
本文详细介绍了C语言中的字符数组、指针概念,包括一级和二级指针、void*指针的灵活性、const指针的使用规则,以及数组指针和指针数组的区别,帮助读者理解不同类型指针的传参和内存管理技巧。
摘要由CSDN通过智能技术生成