以下声明
#include<stdio.h>
int main()
{
char *(*s)[ ];
return 0;
}
为啥可以这样声明呢?
1.请问这样声明的指针指向的空间是?
以下声明
#include<stdio.h>
int main()
{
char *(*s)[ ];
return 0;
}
为啥可以这样声明呢?
1.请问这样声明的指针指向的空间是?
2 回答1.7k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
1 回答949 阅读
1 回答1.1k 阅读
2 回答1.1k 阅读
char *(*s)[ ];
按优先级,先看(*s)
。由于指针和数组可以转换,那么(*s)
转换为s[]
;所以上式可以转换成:char *s[][];
再按优先级来判断,先确定
s[][]
为一个二维数组
,前面加一“”号,表示其每一个元素都为一个char(即字符串)。再啰嗦一句,如果没有里面的括号,是这种情况:
char **s[]
,那就又不一样了。按优先级,s先与下标符结合,即s[]
,这表示为一个一维数组
,再与前面的两个“*”号结合,表示数组中的元素为指向指针的指针。