0

首先我定义了这个结构:

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

我的目标是接收_num_of_lines用户的输入。它将用于定义二维数组的行数,data 而数组_lines_len表示每行的长度data

我正在尝试 malloc 内存_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);
4

2 回答 2

1

sizeof(linesStruct._lines_len)返回指针的大小(即两个字)。实际上没有办法在编译时静态确定数组大小。_num_of_lines但无论如何,你已经把它存储起来了。

于 2013-10-28T17:40:17.043 回答
0

linesStruct._num_of_lines已经告诉您数组大小。

变量len的值始终为 1,因为整数指针的大小与整数相同。

int len = (int) ((sizeof(linesStruct._lines_len))/(sizeof(int)));

另外,您不会强制转换 malloc() 结果

于 2013-10-28T17:47:00.477 回答