如何在以下情况下获取数组的sizeof:

时间:2014-08-14 04:11:26

标签: c

我在C中编写了如下代码,

#define SOB1 10
#define SOB2 20

char Buffer_1[SOB1];
char Buffer_2[SOB2];


char * CommandArray[2] = {Buffer_1,Buffer_2};

如何通过Buffer_1间接获得Buffer_2CommandArray的大小?  更确切地说,我应该根据char * CommandArray[2]

的索引了解SOB1或SOB2的价值

3 个答案:

答案 0 :(得分:7)

如果不自行存储信息,则无法完成。

答案 1 :(得分:4)

在这种情况下,您无法执行sizeof,因为当您开始通过指针访问数组元数据时,数组元数据已丢失。您需要使用sizeof(Buffer_1)sizeof(Buffer_2)

另一个选项(如果您无权访问Buffer_1Buffer_2)将存储第二个大小变量,该变量等于每个缓冲区的#define,并使用那。由于数组不包含字符串,因此您也无法检查\0或类似字符串,因此在使用缓冲区溢出时需要非常小心(存储大小变量的另一个原因)。

答案 2 :(得分:-2)

您只需将其指定给指针即可。您需要使用calloc或malloc分配内存。