C语言程序语句:p1=(int*)malloc(5*sizeof(int)); 这是什么意思?请详细解释

高手,打扰一下,C语言程序语句:p1=(int*)malloc(5*sizeof(int)); 这是什么意思?请详细解释
最新回答
猫街少女

2025-06-20 14:39:23

malloc是向系统申请内存空间的函数,
返回值
是void *
很明显,p1一定是定义为int *p1;的,所以强制malloc返回的指针更改类型为int *
malloc的参数说明要申请多少字节数据,这里要申请一个连续5个整型的数据区,所以用5乘以每个int占用的字节数,即5*sizeof(int)
追问
5后面的*是乘的意思?我还以为是指针呢!
可是int不是占4个字节吗?那直接用20就可以了啊,为什么还要用5*sizeof(int)这么麻烦?
追答
写5*sizeof(int)要比写5*4或直接写20在程序的可移植方面要好,当你的代码如果有一天需要搬到别的CPU(比如ARM)上时,CPU不一定都是32位的,那时sizeof(int)就可能不是等于4了。
追问
谢啦~(^O^)