我在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_2
和CommandArray
的大小?
更确切地说,我应该根据char * CommandArray[2]
答案 0 :(得分:7)
如果不自行存储信息,则无法完成。
答案 1 :(得分:4)
在这种情况下,您无法执行sizeof
,因为当您开始通过指针访问数组元数据时,数组元数据已丢失。您需要使用sizeof(Buffer_1)
或sizeof(Buffer_2)
。
另一个选项(如果您无权访问Buffer_1
和Buffer_2
)将存储第二个大小变量,该变量等于每个缓冲区的#define
,并使用那。由于数组不包含字符串,因此您也无法检查\0
或类似字符串,因此在使用缓冲区溢出时需要非常小心(存储大小变量的另一个原因)。
答案 2 :(得分:-2)
您只需将其指定给指针即可。您需要使用calloc或malloc分配内存。