目录复制
前言
指针数组与数组指针理解起来比较难, 如果直接形象化是最好的, 在此用二维行列来理解
在这过程会用几个简单实例验证
指针数组实例
可以理解成 行是指针 ,列是数组 类型。
测试源码:
int main() {
char *str[3] ={
{"000"},
{"111"},
{"222"},
};
char **p;
p = &str[0];
for (int i = 0; i < 3; ++i) {
printf("str : %s %x %d \n", str[i], &str[i], sizeof(str[i]) );
printf("p : %s %x %d \n", p[i], &p[i], sizeof(p[i]) );
}
}
如图,每个数组的长度是8 ,刚好对应指针长度。
输出结果:
数组指针实例
数组指针其实就是一位数组的一种形式,如下str 变量就是个 长度是3个字节类型的指针,长度为什么等于3 ,是因为char[3] 。
int main() {
char (*str)[3] = {{'1','2','3'},{'4','5','6'},{'7','8','9'}};
char **p;
p = str;
for (int i = 0; i < 3; ++i) {
// p = &str[i];
printf("str[i] : %c %d \n", str[i] , sizeof(str[i]) );
}
}
下图,得出长度是3个字节