我对这个C程序有疑问。我不明白为什么即使我使用App
指令初始化我的数组,我也有相同的大小(4字节),无论我传递给我的函数初始化的第二个参数。
malloc()
答案 0 :(得分:4)
首先,数组不是指针,反之亦然。
在你的代码中,S.tab
是一个指针,并且在指针上使用sizeof
将评估指针本身的大小,而不是指向该指针的内存量。
在您的平台上,指针(int *
)的大小为4个字节,因此您始终可以看到输出为4。
如果您有一个正确的以null结尾的char
数组,您可以使用strlen()
来获取字符串元素的长度,但是,仍然可能无法为您提供无论如何,分配的内存的实际大小。您需要自己跟踪大小。通常,您不能指望从指针本身提取信息。