|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#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;
}
定义int类型的时候是 int (*p)[5] = &array array是一个二维数组, 加一个指针符号写成int *(*p)[5] = &array也可以执行
但是为什么标红字体中数组指针的定义为什么外面指针符号不能省略呢 或者说为什么要有呢
首先 你定义的char *array[5]是一个指针数组 首先他是一个数组,数组里存放了五个字符串指针;
然后 &array 这是什么 这是对array数组第一个元素取地址 对一个指针取地址 那么他前面对应的变量就应该是一个 指向指针的指针;
再看这个char *(*p)[5],如果不要最外面的*,就是一个数组指针,首先它是一个指针,指向一个数组;那么这只是一个一级指针,所以必须在外层加一个*,表示他是一个指向指针的指针,才能和后面的&array对应;
|
|