16. 指针数组和数组指针
指针数组:组成元素是指针的数组。
数组指针:指向数组的指针。
//变长字符串数组,保存每个字符串的首地址,字符串内容保存在只读区
//结合指针作为数组的元素,即可使得存储更紧凑,有可以带来访问优势
const char *pszBuff[] = {
"wqerasdf",
"wqe4f",
"wqwertd2324f",
"23f",
};
//定长字符串数组,每个元素都占用32字节
char szBuff[][32] = {
"wqerasdf",
"wqe4f",
"wqwertd2324f",
"23f",
};
【数组名】是【数组第0个元素】类型的指针常量。
【二维数组】的元素是【一维数组】
对【某类型的指针】做*运算,得到【某类型】的引用
【szBuff】是【char [32]】类型的指针常量。
【szBuff】的元素是【char [32]】
*szBuff,得到【char [32]】的引用
也就是说,*szBuff得到了一维数组的引用
也就是说,*szBuff是char类型的指针常量
**szBuff得到char的引用
int a[3];
a是指向数组第0元素的指针常量,所以是int*
对int变量取地址,得到int*
对float变量取地址,得到float*
对数组类型取地址,得到 数组*
所以对a取地址,也就是&a,得到int(*)[3]
指针运算的要点:
什么类型的指针参与运算
怎么运算
运算后得到什么类型