【发布时间】:2021-03-23 23:47:29
【问题描述】:
我正在尝试使用 sizeof 在 C 中获取 动态数组 的大小。 我有结构,并使其包含 10 个元素。
struct date{
int day;
int month;
int year;
};
void main(){
struct date *table;
table = (struct date*) malloc(sizeof(struct date) * 10);
}
所以当我尝试使用 sizeof 获取大小时,我得到 8 而不是 120(因为结构的大小是 12)。
printf("%d, sizeof(table));
output is 8
我没有将其设为动态数组,而是将其更改为静态数组以查看会发生什么,结果为 120。所以我不明白问题出在哪里。我知道我不能说 sizeof(*table) 因为它会给出第一个元素的大小。出于上下文目的,需要使用动态数组来扩展每个新数据的大小。
【问题讨论】:
-
在编译期间评估
sizeof表达式。它为您提供操作数类型的大小。对于动态数组,它为您提供指针的大小,通常为 4 或 8 个字节(取决于底层平台)。
标签: arrays c pointers dynamic-memory-allocation