我无法理解为什么我的数组大小错误

时间:2016-01-14 16:29:23

标签: c arrays pointers sizeof

我对这个C程序有疑问。我不明白为什么即使我使用App指令初始化我的数组,我也有相同的大小(4字节),无论我传递给我的函数初始化的第二个参数。

malloc()

1 个答案:

答案 0 :(得分:4)

首先,数组不是指针,反之亦然。

在你的代码中,S.tab是一个指针,并且在指针上使用sizeof将评估指针本身的大小,而不是指向该指针的内存量。

在您的平台上,指针(int *)的大小为4个字节,因此您始终可以看到输出为4。

如果您有一个正确的以null结尾的char数组,您可以使用strlen()来获取字符串元素的长度,但是,仍然可能无法为您提供无论如何,分配的内存的实际大小。您需要自己跟踪大小。通常,您不能指望从指针本身提取信息。