sizeof(myArray)会是什么?

时间:2014-06-19 16:45:38

标签: c

考虑以下类型定义和变量定义:

typedef char x[10];  
x myArray[5];

sizeof(myArray)50,但我不知道为什么? (假设一个字符占用1个字节。)
请解释一下答案?

2 个答案:

答案 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,它由5x个元素组成。显然,myArray的大小为50(即5 * 10)。

这就是全部。

如果这不是一个充分的解释,你必须首先解释究竟是什么导致混淆。