一、字符指针变量《剑指offer》中收录了⼀道和字符串相关的笔试题我们⼀起来学习⼀下str1 and str2 are not same:str1 和 str2 只是两个内容一样的不同数组两个数组的首元素的地址是不一样的str3 and str4 are same hello bit.是字符串常量放在只读常量区。C 语言有字符串常量池优化相同的字符串字面量在常量区只存一份。str3 和 str4 都保存这个唯一常量字符串的首地址两个指针的值地址相同。二、数组指针变量1.数组指针变量是什么字符指针变量存放字符的地址指向的是字符exchar* pc整型指针变量存放的是整型变量的地址指向的是整型变量exint n 10;int* pn n;数组指针变量存放数组的地址指向的是数组exint arr[5];int (*p)[5] arr;2.数组指针类型应该怎么初始化三、二维数组传参的本质数组指针一般是在二维数组传参时才会使用二维数组是一维数组的数组二维数组的元素是一维数组每一行就是一个元素所以首元素就是第一行。二维数组传参形参的部分可以写成数组也可以写成指针的形式四、函数指针变量1.函数指针变量的创建与使用函数指针 -- 指向函数的指针函数指针变量 -- 存放函数的地址函数名也是函数的地址来自《C陷阱与缺陷》的两段代码2.typedef关键字typedef是用来类型重命名的可以将复杂的类型简单化由上图我们可以发现a是指针类型b是整型类型。如果我们想同时把这两个变量设为指针类型我们可以typedef如下图typedef 对数组指针与对函数指针的重命名函数指针也是同理五、函数指针数组函数指针存放函数地址的指针指向一个函数。函数指针数组数组里的每一个元素都是函数指针数组存储多个同类型函数的地址。六、转移表函数指针数组的用途转移表用函数指针数组实现的查表分支结构