c解释中的malloc语法

时间:2014-08-21 10:28:00

标签: c pointers

我在C中了解了malloc的概念,但语法有些令人困惑。 有人可以一步一步地解释下面的语法吗?

   data_type *ptr;
   ptr=(data_type*)malloc(size in bytes);
  *ptr=some_value;

我理解的是:  首先我们声明一个指针,它仍指向无处。然后指针,而不是内容,但指针本身等于包含data_type的内存地址空间的指针类型。

有人可以扩展(或清除)我的陈述以更好地理解吗?

2 个答案:

答案 0 :(得分:1)

您的代码稍有不妥,应该是:

data_type *ptr;
ptr=(data_type *)malloc(size in bytes);
*ptr=some_value;

ptr包含一个内存地址,指出数据的位置。它开始指向一个随机位置。 malloc保留一块内存供程序使用,并返回该内存开头的地址,将该地址存储在ptr中。当你做*ptr = value时,你说'将内存设置为ptr的地址等于值'。你不需要强制转换malloc,所以你的代码会更好:

data_type *ptr = malloc(size in bytes);
*ptr=some_value;

答案 1 :(得分:0)

malloc函数返回通用指针(void *),以便可以将其分配给任何类型的指针并接受大小(即要分配多少内存)。

它不是数据类型,而是指向data_type的指针。

ptr=(data_type *) malloc (sizeof (data_type));