h****b 发帖数: 157 | 1 这类题见过几次了,都不太明白,哪位xdjm给说说?
先谢了
Char **array[12][12][12]
Referring to the array above, which one of the following definitions and
initializations ofp is valid?
char ***** p = array;
char * (* p) [12][12][12] = array;
const char ** p [12][12][12] = array;
char (** p) [12][12] = array;
char ** (* p) [12][12] = array; |
t****t 发帖数: 6806 | 2 试试不就知道了
【在 h****b 的大作中提到】 : 这类题见过几次了,都不太明白,哪位xdjm给说说? : 先谢了 : Char **array[12][12][12] : Referring to the array above, which one of the following definitions and : initializations ofp is valid? : char ***** p = array; : char * (* p) [12][12][12] = array; : const char ** p [12][12][12] = array; : char (** p) [12][12] = array; : char ** (* p) [12][12] = array;
|
h****8 发帖数: 599 | 3 Char **array[12][12][12] 三维数组,元素是char**
char ***** p = array; p是5维指针,从数组到指针的转换是可以。所以我认为这个对的
char * (* p) [12][12][12] = array; p是指针,指向一个三维数组,数组元素是char
*,所以错
const char ** p [12][12][12] = array; p是三维数组,元素类型是const char**,我
觉得这里non-const应该不能转换成const,因为是元素而不是指针,所以也错
char (** p) [12][12] = array; p是二维指针,指向一个二维数组,元素类型为char,
很明显连dimension都不对
char ** (* p) [12][12] = array;p是一个指针,指向一个二维数组,元素类型为char
**,与array所指向的数组类型不同 不能赋值
所以只有1是对的我认为。 |
X****r 发帖数: 3557 | 4 你错了。
和你说了试一下就知道了,一分钟的事情。
对的
char
char,
char
【在 h****8 的大作中提到】 : Char **array[12][12][12] 三维数组,元素是char** : char ***** p = array; p是5维指针,从数组到指针的转换是可以。所以我认为这个对的 : char * (* p) [12][12][12] = array; p是指针,指向一个三维数组,数组元素是char : *,所以错 : const char ** p [12][12][12] = array; p是三维数组,元素类型是const char**,我 : 觉得这里non-const应该不能转换成const,因为是元素而不是指针,所以也错 : char (** p) [12][12] = array; p是二维指针,指向一个二维数组,元素类型为char, : 很明显连dimension都不对 : char ** (* p) [12][12] = array;p是一个指针,指向一个二维数组,元素类型为char : **,与array所指向的数组类型不同 不能赋值
|
h****b 发帖数: 157 | 5 答案是5,我试过了。只是不知道怎么解释。知道的请不吝赐教!! |
X****r 发帖数: 3557 | 6 C的规则是:某类型的数组可以转化成同类型的指针。多维数组就是数组的数组。
所以你这里array是字符的指针的指针的数组的数组的数组,唯
一可以转化成的就是字符的指针的指针的数组的数组的指针,即
char **(*)[12][12]
【在 h****b 的大作中提到】 : 答案是5,我试过了。只是不知道怎么解释。知道的请不吝赐教!!
|
z****e 发帖数: 2024 | 7 orz
【在 X****r 的大作中提到】 : C的规则是:某类型的数组可以转化成同类型的指针。多维数组就是数组的数组。 : 所以你这里array是字符的指针的指针的数组的数组的数组,唯 : 一可以转化成的就是字符的指针的指针的数组的数组的指针,即 : char **(*)[12][12]
|
z****e 发帖数: 2024 | 8 master师傅好久不来了?
【在 t****t 的大作中提到】 : 试试不就知道了
|
X****r 发帖数: 3557 | 9 还好不是master乌龟……
【在 z****e 的大作中提到】 : master师傅好久不来了?
|
z****e 发帖数: 2024 | 10 经常缩着头,就变乌龟了吧。
【在 X****r 的大作中提到】 : 还好不是master乌龟……
|
|
|
d***i 发帖数: 344 | 11 大拿...orz
赶紧去复习了一下tcpl的多维数组...
【在 X****r 的大作中提到】 : C的规则是:某类型的数组可以转化成同类型的指针。多维数组就是数组的数组。 : 所以你这里array是字符的指针的指针的数组的数组的数组,唯 : 一可以转化成的就是字符的指针的指针的数组的数组的指针,即 : char **(*)[12][12]
|
t****t 发帖数: 6806 | 12 赞你的肺活量!
【在 X****r 的大作中提到】 : C的规则是:某类型的数组可以转化成同类型的指针。多维数组就是数组的数组。 : 所以你这里array是字符的指针的指针的数组的数组的数组,唯 : 一可以转化成的就是字符的指针的指针的数组的数组的指针,即 : char **(*)[12][12]
|
t****t 发帖数: 6806 | 13 教你一个偷懒的办法: 找个unix, 运行cdecl
cdecl> explain char **arr[12][12][12]
declare arr as array 12 of array 12 of array 12 of pointer to pointer to
char
cdecl> explain char ** (* p) [12][12]
declare p as pointer to array 12 of array 12 of pointer to pointer to char
【在 h****b 的大作中提到】 : 答案是5,我试过了。只是不知道怎么解释。知道的请不吝赐教!!
|
h****b 发帖数: 157 | |
h****b 发帖数: 157 | 15 GOT IT..有点意思。
char
【在 t****t 的大作中提到】 : 教你一个偷懒的办法: 找个unix, 运行cdecl : cdecl> explain char **arr[12][12][12] : declare arr as array 12 of array 12 of array 12 of pointer to pointer to : char : cdecl> explain char ** (* p) [12][12] : declare p as pointer to array 12 of array 12 of pointer to pointer to char
|
U***y 发帖数: 149 | 16 what is char**
对的
char
char,
char
【在 h****8 的大作中提到】 : Char **array[12][12][12] 三维数组,元素是char** : char ***** p = array; p是5维指针,从数组到指针的转换是可以。所以我认为这个对的 : char * (* p) [12][12][12] = array; p是指针,指向一个三维数组,数组元素是char : *,所以错 : const char ** p [12][12][12] = array; p是三维数组,元素类型是const char**,我 : 觉得这里non-const应该不能转换成const,因为是元素而不是指针,所以也错 : char (** p) [12][12] = array; p是二维指针,指向一个二维数组,元素类型为char, : 很明显连dimension都不对 : char ** (* p) [12][12] = array;p是一个指针,指向一个二维数组,元素类型为char : **,与array所指向的数组类型不同 不能赋值
|
q*c 发帖数: 9453 | 17 ..感觉这不是人干的事情, 有点失去人性了, 呵呵。
【在 z****e 的大作中提到】 : orz
|