p=(int*)malloc(n*sizeof(int)
时间: 2023-11-23 21:03:11 浏览: 98
这段代码是一段动态分配内存的代码。在C语言中,malloc()函数可以用来动态地分配内存空间,以便在程序执行过程中使用。
根据代码中的语句p=(int*)malloc(n*sizeof(int)),变量p被声明为一个指向int类型的指针。在这段代码中,我们要为p分配内存空间以存储n个整型数据。
首先,sizeof(int)返回一个int类型所占的字节数,通常为4字节(32位系统)或8字节(64位系统)。
然后,n*sizoef(int)计算出所需的内存空间总大小,单位是字节。
malloc()函数用来申请所需的内存空间。在这个例子中,它会为p分配n个sizeof(int)大小的字节空间。
最后,将malloc()函数返回的指向分配空间起始位置的指针赋值给变量p,这样我们就可以通过p来访问动态分配的内存空间。记住,需要将返回的指针强制类型转换为(int*)类型,因为malloc返回的是(void*)类型指针。
这段代码的目的是在运行时动态地分配一个大小为n*sizeof(int)的内存空间,以便存储整型数据,并通过指针p来访问该内存空间。
相关问题
int**p;**p=(int**)malloc(n*sizeof(int*))正确吗?
不, int**p;**p=(int**)malloc(n*sizeof(int*)) 不是正确的。这段代码有两个问题。首先,int** p;声明了一个指向指针的指针变量p。接下来,**p=(int**)malloc(n*sizeof(int*))试图将分配的内存地址赋值给二级指针p,这是不正确的,因为**p是一个值,而不是一个指针。正确的写法应该是 *p = (int*)malloc(n*sizeof(int)),这样可以将分配的内存地址赋值给一级指针p。
int *p = NULL; int n = 10; p = (int *)malloc(sizeof(int)*n);
这段代码实现了动态内存分配,用于在运行时分配一段连续的内存空间,并返回指向该内存空间首地址的指针p。具体来说,代码首先将指针p初始化为NULL,然后申请了一块大小为n个int类型的内存空间,将p指向该内存空间的首地址。这里使用了malloc函数,其参数为申请内存空间的字节数,因此需要将n乘以每个int类型的字节数。需要注意的是,用完这块内存空间后,需要使用free函数将其释放,否则会造成内存泄漏。
阅读全文