|
4鱼币
作业题1中
#include<stdio.h>
int main(void)
{
char *array[5] = {"FishC","Five","Star","Good","WoW"};
char *(*p1)[5] = &array; //请问为什么这一行会是char *(*p1)[5] = &array; 而不是 char (*p1)[5] = &array;
这里不是应该定义一个数组指针吗,指向一个指针数组,为啥会多一个*,这个该怎么理解
int i,j;
for(i = 0; i < 5; i++)
{
for(j = 0; *(*((*p1)+i)+j)!='\0' ;j++)
{
printf("%c ",(*p1)[i][j]);
}
printf("\n");
}
return 0;
}
本帖最后由 superbe 于 2019-9-12 17:56 编辑
char (*p1)[5]的p1指向的数组类型是char [5],该数组有5个char类型的元素。
char *(*p1)[5]的p1指向的数组类型是char *[5],该数组有5个char *类型的元素。
array的每个元素都是char *类型,&array指向的是整个数组,所以要用char *(*p1)[5]=&array,否则两边不匹配
假如数组array类型是char [5]的,就要用char (*p1)[5]了:
char array[5]="abcd";
char (*p1)[5]=&array;
|
最佳答案
查看完整内容
char (*p1)[5]的p1指向的数组类型是char [5],该数组有5个char类型的元素。
char *(*p1)[5]的p1指向的数组类型是char *[5],该数组有5个char *类型的元素。
array的每个元素都是char *类型,&array指向的是整个数组,所以要用char *(*p1)[5]=&array,否则两边不匹配
假如数组array类型是char [5]的,就要用char (*p1)[5]了:
char array[5]="abcd";
char (*p1)[5]=&array;
|