考虑以下类型定义和变量定义:
typedef char x[10];
x myArray[5];
sizeof(myArray)
是50
,但我不知道为什么? (假设一个字符占用1个字节。)
请解释一下答案?
答案 0 :(得分:3)
typedef char x[10];
将新类型x
定义为10个char
的数组。因此,myArray
是一个5 x
的数组 - 这是一个10 char
的数组。
那是myArray
实际上是char[5][10]
类型;一个5
元素数组,其中每个元素都是10
char
的数组。
因此sizeof(myArray)
将返回50
。
答案 1 :(得分:2)
难以解释"什么,当答案看起来很明显。我们无法确定要关注哪些具体细节。
您声明了类型名x
,代表char [10]
类型。此类型的大小为10
。
然后你声明了一个对象myArray
,它由5
个x
个元素组成。显然,myArray
的大小为50
(即5 * 10
)。
这就是全部。
如果这不是一个充分的解释,你必须首先解释究竟是什么导致混淆。