理解声明,malloc和这行C代码的其他部分

use*_*735 -3 c

我刚开始使用C并遇到了一些我不理解的代码.有人可以解释它的作用吗?

short int * work = (short int *) malloc(1000*16);
Run Code Online (Sandbox Code Playgroud)

Ed *_* S. 5

你究竟不明白什么?该代码声明了short int*一个指向一个或多个16位(至少 16位)有符号整数的指针.它将它初始化为一个返回的指针malloc,它是一块足以容纳1000 * 16字节的内存块.

现在,他们为什么要使用1000 * 16?我不知道.通常你会分配num_elements * sizeof(element),即num_elements * sizeof(short int).

更典型地,使用num_elements * sizeof(*work)以便在更改指针类型时代码不会中断.

另请注意,在C中强制转换malloc的返回值是个坏主意.