未签名字符型指针数组pArray,包含10行10列。

3
以下声明的含义是什么?
unsigned char (*pArray[10][10]);

这个声明中大括号没有影响。你确定你复制它正确了吗? - AnT stands with Russia
3个回答

4

声明

unsigned char (*pArray[10][10]);

是完全等同于

unsigned char *pArray[10][10];

这些括号完全是多余的,没有任何影响。这是一个2D的10x10数组,其中每个元素都是指向unsigned char *类型指针的指针。

4
“完全多余且毫无效果” - 这个措辞不是有点多余了吗? :) - thedayturns
1
每次我想到冗余,我总是不自觉地使用过度的措辞,毫无例外 :) - AnT stands with Russia
至少AndreyT不是一个矛盾修辞。哈哈 - Sadique
我可以钻空子:在 int ((*p))[10] 的情况下,花括号是多余的但确实有影响(即多余的一对花括号是多余的,但通常花括号很重要),而在 int ((p)) 的情况下,这些括号都是多余的且没有影响 :) - AnT stands with Russia

3

Cdecl说:

声明pArray为一个10 x 10的unsigned char类型指针数组

基本上你所做的是声明了一个二维指针数组。

参考这个问题:

等效的C语言声明

现在试着解析一下这个:

int **(*f)(int**,int**(*)(int **,int **));

[当然是在你的脑海中]


很简单...函数指针返回一个 int **,接受两个参数,一个 int ** 和一个指向接受两个int ** 作为参数并返回另一个 int ** 的函数的指针...再加上一些数组会让它更有趣...其中之一的函数参数是 int *(*p( int** ))[10] - David Rodríguez - dribeas
2
@David:嗯...这个怎么样: int **(*f)(int**,int**([5])(int **,int **[5]))[5](); - Sadique

0

www.cdecl.org说:

声明pArray为10个指向无符号字符的指针的10个数组


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接