这个p = (int ***)malloc(sizeof(int **));中的p表达什么意思
时间: 2023-08-16 09:08:50 浏览: 120
在这个表达式中,`p` 是一个指向指针的指针,`malloc()` 函数用来在堆上动态地分配内存空间。
`malloc()` 函数的作用是分配指大小的内存空间,并返回一个指该内存空间起始地址的指针。在这个例子中,`sizeof(int **)` 表示要分配的内存空间的大小,即指向指针的指针的大小。
然后,通过类型转换 `(int ***)` 将返回的指针转换为指向指针的指针类型,并将其赋值给 `p`。这样,`p` 就指向了一个指向指针的指针所分配的内存空间。
通过这种方式,我们可以使用 `p` 来存储一个指向指针的指针,并且可以在程序中动态地分配和释放相应的内存空间。这在涉及到多级指针或需要动态管理内存的情况下非常有用。
需要注意的是,在使用完 `malloc()` 分配的内存空间后,我们需要使用 `free()` 函数来释放这些内存空间,以避免内存泄漏。
希望这个解释对你有帮助。如果还有其他问题,请随时提问。
相关问题
int* p = (int*)malloc(sizeof(int));是什么意思
这行代码的意思是:分配了一个整型变量大小的内存空间,并将其地址赋值给指针变量p。使用malloc函数可以在堆内存中动态分配指定大小的内存空间,该函数返回一个void类型的指针,需要强制转换为目标类型的指针后才能使用。在本例中,使用强制类型转换将void指针转换为int指针,以便将分配的内存空间用于存储整型数据。
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。
阅读全文