目录
回顾:
1、内存单元是有编号的,其中,编号=地址=指针
2、指针(变量)大小是4/8个字节,取决于是在32或者64位平台上
字符指针
字符指针不能修改其内容
str1和str2创建并指向一个新的空间,地址不同,比较所得的结果为不相等
const 常量字符串,创建好之后不能修改,所以当内容一样的时候不会开辟新的空间,只会保存一份,两个新的指针str3和str4指向同一个东西
指针数组
存放指针的数组
用指针数组模拟一个二维变量
数组指针
是指向数组的指针
数组名是数组首元素的地址,但是存在两个例外
sizeof(数组名),这里的数组名表示整个数组,计算整个数组的大小
&数组名,这里的数组表示整个数组,取出的是数组的地址,不是首元素的地址,取出后交给数组指针
前两种增加了16进制的4,也就是四个字节,后两种增加了40个字节
指针类型决定了指针+1到底加了几个字节
作用:
二维数组传参,以下为曾经的做法
数组名是首元素的地址
二维数组是一维数组的数组,所以二维数组名就是第一行一维数组的地址
数组参数、指针参数
一维数组传参
要看本质
二维数组传参
二维数组传参的时候,传递的是首元素的地址,也就是第一行的地址,就可以使用数组指针来接收
一级指针传参
形参写成一级指针就可以
当一个函数的参数部分为一级指针的时候,函数能接受什么参数?
地址,数组,指针
二级指针传参
当一个函数的参数部分为二级指针的时候,函数能接受什么参数?
二级指针,指针数组(存放指针的数组,**p为指针的地址)
不能是二维数组
函数指针
指向函数的指针,存放的是函数的地址
&函数名是函数的地址
函数名也是函数的地址
使用场景
读复杂代码
typrdef是类型重命名