|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main()
{
char *array[5] = {"FishC", "Five", "Star", "Good", "WoW"}; // 定义一个指针数组
char *(*p)[5] = &array; // (*p)[5]是数组指针,为什么前面还要再加一个*?
int i, j;
for (i = 0; i < 5; i++)
{
for (j = 0; (*p)[i][j] != '\0'; j++) // 这里(*p)[i][j]如果是指内容的话不是应该要取值吗,不应该是用 *p[i][j] 来表示取值吗?
{
printf("%c", (*p)[i][j]); //既然是指针,打印的话不应该是*(*p)[i][j]吗?
}
printf("\n");
}
return 0;
}
(*p)[5] 数组指针,是一个指针,它指向了一个数组 它本来正常指向的是array[5]
(*p)[0] = "FishC"
(*p)[1] = "Five"
因为它里面是字符串不是字符所以不能这样访问,所以还得通过指针来访问。
但本题中*array[5] 指针数组 也是数组,但是它里面存放的都是指针变量,"FishC", "Five", "Star", "Good", "WoW" 这些都是把字符串的地址存放到 *array[5] 中。
数组里面都是指针,那怎么访问里面的内容呢?
平常
int a = 5;
int *p = &a; // &a 就是地址,如果用指针的方式来获取a处的内容 就得用 *p 来操作了
*(*p)[5] 就是用指针的形式指向数组中"FishC", "Five", "Star", "Good", "WoW" 的地址。就好比
*(*p)[0] = "FishC"的地址
*(*p)[1] = "Five"的地址
好了*(*p)[5]再来看它的优先级
() 最高 (*p)
[] 其次 [5]
* 最后
所以这里先是一个数组指针(*p)[5]然后再是 *一个指针来指向数组里的每一项。
|
|