C语言p1=(int *)malloc(sizeof(int))作用与意思是什么

   更新日期:2024.05.02
p1=(int *)malloc(sizeof(int));语句是给指针变量p分配一个整形数据空间。
C语言中定义指针变量后,必须给指针变量进行相应的地址分配,才可以使用指针变量,否则会出现程序异常。常见的指针地址分配方法为:
int *p1; //定义指针变量p1,未初始化
(1)
int x =5;
p1=&x ; //给指针变量分配一个已存在的相应类型的变量的地址,即p1指向x所在的位置。
(2)
p1=(int *)malloc(sizeof(int)); //让系统为p1选择一个内存空间
其中,malloc()是系统动态分配内存的函数,其函数原型为:
void * malloc( int size );
void *表示函数返回值为任意类型,即malloc可为任意类型数据分配内存空间
参数size是指分配的内存单元字节数

接下来就可以通过指针变量p1进行数据操作了,如:*p1 = 10 ;
注意,当p1未分配内存地址时(称为野指针),*p1操作会导致程序崩溃。

malloc是向系统申请内存空间的函数,返回值是void
*
很明显,p1一定是定义为int
*p1;的,所以强制malloc返回的指针更改类型为int
*
malloc的参数说明要申请多少字节数据,这里要申请一个连续5个整型的数据区,所以用5乘以每个int占用的字节数,即5*sizeof(int)

申请一个大小为 一个int所占值大小 的内存空间,并返回地址,且把地址强制转换成 int* 类型的,然后再把转换过的地址值赋给指针变量p1.

sizeof(int)是算整形int的长度, 用malloc()函数分配一个int型变量长度的存储空间,
(int *)是转换成int型的指针类型

分一块内存给p1,sizeof(int)即分配的大小为INT的大小,为4
free(p1);//释放p1的内存

相关链接

欢迎反馈与建议,请联系电邮
2024 © 视觉网