首先我定义了这个结构:
typedef struct{
int **_data;
int _num_of_lines;
int *_lines_len;
} Lines;
我的目标是从用户那里收到_num_of_lines
作为输入。
这将用于定义2D数组data
的行数
而数组_lines_len
代表data
我正在为_lines_len
尝试malloc内存,但我总是回过头来看,数组的大小是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);
答案 0 :(得分:1)
sizeof(linesStruct._lines_len)
返回指针的大小(即两个单词)。在编译时,实际上没有办法静态地确定数组大小。但无论如何,你已经将它存储在_num_of_lines
中。
答案 1 :(得分:0)
linesStruct._num_of_lines 已经告诉您数组大小。
变量 len 的值始终为1,因为整数指针的大小与整数相同。
int len = (int) ((sizeof(linesStruct._lines_len))/(sizeof(int)));