2处的int*是做什么的?1处,3处分别是我理解的意思吗

img

1、第一处是初始化,初始化了一个指向int类型变量的指针并将其赋值为NULL。
2、第二处是在堆上申请了一段内存空间,大小为一个int类型所占字节的num倍(64为机int占4个字节,也就是申请了4num字节的大小),并且ptr指向了这一块内存。至于int的作用是将malloc函数的返回值强转为int型的,malloc函数是返回一个void的指针。
3、第三处就是输入一个值并将其赋值给&p[i]所代表的内存空间。

1处定义了一个数组,ptr是数组的指针,但并不想初始化,因为此时还不知道长度。C语言规定所有声明必须放在最前面,所以只能先给它赋值成空,后面再重新赋值。写成int ptr[0]其实也行,反正后面都要重新赋值,前面赋值成什么都行。
2处就是给它初始化成一个长度num的数组,(int *)是把它强制转换为指针类型。
3处ptr[i]就是第i个元素,&ptr[i]是第i个元素的地址