gpt4 book ai didi

C 为结构体中的数组动态分配内存

转载 作者:行者123 更新时间:2023-11-30 15:44:04 25 4
gpt4 key购买 nike

首先我定义了这个结构:

typedef struct{
int **_data;
int _num_of_lines;
int *_lines_len;
} Lines;

我的目标是接收_num_of_lines作为用户的输入。将用于定义二维数组data的行数而数组_lines_len代表data

中每行的长度

我试图为_lines_len分配内存,但我总是得到数组的大小是2,我不明白为什么......

int main(int argc, char *argv[]) {
Lines linesStruct;
printf("enter num of lines:\n ");
scanf("%d",&linesStruct._num_of_lines);
printf("Num of lines is = %d \n", linesStruct._num_of_lines);

linesStruct._lines_len = (int*) malloc(linesStruct._num_of_lines * sizeof(int));
int len = (int) ((sizeof(linesStruct._lines_len))/(sizeof(int)));
printf("number of lines len = %d \n", len);

最佳答案

sizeof(linesStruct._lines_len) 返回指针的大小(即两个单词)。实际上没有办法在编译时静态确定数组大小。但无论如何,您已经将其存储在 _num_of_lines 中。

关于C 为结构体中的数组动态分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19641373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com