我在C中了解了malloc的概念,但语法有些令人困惑。 有人可以一步一步地解释下面的语法吗?
data_type *ptr;
ptr=(data_type*)malloc(size in bytes);
*ptr=some_value;
我理解的是: 首先我们声明一个指针,它仍指向无处。然后指针,而不是内容,但指针本身等于包含data_type的内存地址空间的指针类型。
有人可以扩展(或清除)我的陈述以更好地理解吗?
答案 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));