gpt4 book ai didi

c - 如何准确理解 malloc() 和 calloc() 两个函数的语法

转载 作者:太空狗 更新时间:2023-10-29 15:23:07 29 4
gpt4 key购买 nike

我正在学习 C,对动态内存分配语法有一些疑问。

下面的代码是一个动态内存分配的例子。如果我没理解错的话

 (char *) malloc (50 * sizeof (char));

将返回一个指向 char 数据类型的指针和

  pr = (char *) malloc (50 * sizeof (char));

将指针 'pr' 分配给分配动态内存时声明的指针。所以我们会有一个指针指向另一个指针

#include <stdio.h>
#include <stdlib.h>

int main()
{
char *pr;

pr = (char*)malloc( 50 * sizeof(char) );

return 0;
}

我仍然很难理解用于分配动态内存的语法。有人可以详细解释吗?谢谢

最佳答案

will assign the pointer 'pr' to the pointer declared when allocating dynamic memory. So we will have a pointer point to another pointer

不,您将存储指针变量的值。

这和

是一样的
int x = 5;

或者,在更复杂的情况下

int test(void) { return 5;}
int x = test();

在这种情况下,test() 返回一个值 5,它被分配给 x。同理

char * pr = malloc (50 * sizeof (*pr));  // no casting, and sizeof (*pr) is a
// more robust way to have the size defined

malloc()返回的指针赋值给pr。这里没有指向指针的指针。

换句话说,pr 持有指向通过调用 malloc() 分配的内存位置的指针,或 NULL (空指针常量)以防调用失败。

关于c - 如何准确理解 malloc() 和 calloc() 两个函数的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56167758/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com