|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 呼噜呼噜毛 于 2021-3-8 16:09 编辑
#include <stdio.h>
int main()
{
char *array[5] = {"FishC", "Five", "Star", "Good", "WoW"};
char *(*p)[5] = &array;
int i, j;
for (i = 0; i < 5; i++)
{
for (j = 0; (*p)[i][j] != '\0'; j++)
{
printf("%c ", (*p)[i][j]);
}
printf("\n");
}
return 0;
}
为什么定义数组指针的时候还要多用一个*?
char *(*p)[5]
*p表示p是一个指针
(*P)[5]表示指针p指向一个含有5个元素的数组([]优先级大于*,所以(*p)先和[5]结合)
char *(*p)[5] 表示p指向的数组每个元素都是char*型
而array数组就是一个含有5个元素,并且每个元素都是char*类型的数组
所以p指向array数组没毛病
如果去掉前边的*就表示指针p指向一个5个元素的数组,并且数组每个元素都是char型
所以必须要带*
|
|