指针(2) 一维字符型数组传参,指针函数与函数指针
文章目录一、一维字符型数组传参方式1指针遍历方式2数组下标遍历二、指针函数与函数指针1. 指针函数2. 函数指针三、const 修饰指针const代表只读readonlyC语言指针核心知识点总结一、一维字符型数组传参字符数组定义方式char str[32] {0};初始化全部元素为\0。函数声明接收字符数组参数int fun(char pstr[]);数组作为函数形参本质会退化为指针。两种遍历字符数组求字符串长度写法方式1指针遍历char*pNULL;pstr;while(*p!\0){p;}原理指针p指向字符串首地址不断后移直到读取到字符串结束符\0停止。方式2数组下标遍历inti0;while(str[i]!\0){i;}原理依靠下标变量i递增访问数组元素遇到\0结束循环。两种写法最终都可以得到字符串有效字符长度。二、指针函数与函数指针1. 指针函数定义本质本质是函数函数的返回值类型为指针。声明格式示例int*fun(intx,inty);// 返回int类型指针char*fun(void);// 返回char类型指针两条重要规则禁止在指针函数中返回局部变量的地址局部变量函数执行完毕后内存释放地址失效使用会造成野指针错误。指针函数返回的指针可以直接作为其他函数的实参进行传递。2. 函数指针定义本质本质是指针该指针专门用来存放函数的入口地址指向某个函数。三、const 修饰指针const代表只读readonly1.const int *p;与int const *p;二者写法完全等价。const 修饰的是*p指针指向的内容指针变量p本身可以修改可以让p指向别的地址不可以通过*p修改指针指向内存里的数据。2.int *const p;const 修饰指针变量本身p指针p一经初始化后就不能再修改指向p 其他地址写法报错可以通过*p修改指针指向空间里的数据该指针定义时必须初始化赋值。3.const int *const p;与int const *const p;二者写法完全等价。const 同时修饰指针p和*p指针p不能更改指向同时也无法通过*p修改指向内存的数据定义时必须完成初始化。补充区分口诀const 在*左边限制指针指向的数据不能改指针本身可改const 在*右边限制指针本身不能改指向指向的数据可改*左右都加const指针、指向的数据全都不可修改。