指针
1、指针地址空间
指针:指针变量,用来存储内存地址编号
地址:内存会按照字节进行编号,一个字节就有一个编号。(一般地址表示用的是十六进制,查看地址用%p)
空间:分指针本身的空间和指针指向的空间
指针指向谁就保存谁的地址 ,保存谁的地址就指向谁。
2、指针定义
指向对象的数据类型*指针名;
指针对象的数据类型:学过的数据类型都可以,具体看需求
*:代表指针的标记
指针名:自定义
3、指针赋值
指针赋值需要通过变量的形式拿到地址编号,让指针指向该空间,指针本身是存的地址编号,而*指针名是存储指向空间的数据。
4、指针本身的大小
指针本身的大小和指向对象类型无关,是和系统有关,当系统为32位时是4个字节,64位是8个字节。
指针只是存地址编号,地址编号和系统的位数有关
5、指针偏移
前提:指针有明确的指向;
指针偏移和指针指向对象类型有关,以它为单位进行偏移;
指针偏移一般用于连续的空间
如:数组、动态内存申请的空间;
两个指针相减:两个指针指向一块连续的空间,指针相减才有意义;
6、数组指针
是指针,指向的对象是数组,指向对象的类型是数组类型
一般用于指向二维数组中的一行
6.1、指针定义格式
普通指针格式:指向对象的数据类型 *指针名;
数组指针格式:元素数据类型 (*指针名)[元素个数]
6.2、什么场景下会使用数组指针
(1)二维数组作为参数传递到函数内部的时候,形参需要设计成数组指针
(2)二维数组传递是数组首元素的地址,首元素使一个一维数组,传一维数组,传一维数组的地址,形参就要设计成数组指针