有人可以向我解释这些代码部分吗?纠正我,如果我错了。关于malloc的问题
int *longest = malloc(sizeof(int));
*longest =0;
这是否意味着:
- 返回一个指针指向一个内存块的大小为(在32位机)4字节的开始?为什么不写
malloc(4)
? - 对于第二行,是否意味着最长是4字节块的指针,从0开始?
有人可以向我解释这些代码部分吗?纠正我,如果我错了。关于malloc的问题
int *longest = malloc(sizeof(int));
*longest =0;
这是否意味着:
malloc(4)
?是的,这恰好获得足够的内存为一个int
。您应该避免明确地假定给定的大小 - 它将成为未来移植到其他平台的噩梦。你自己发现了 - sizeof(int)
并不总是4。
不,这会将值0赋值给longest
指向的新分配的内存。这里的*
是解引用操作符,它非正式地说“我想用这个指针指向的东西”。
非常感谢。 – zeejan 2012-08-01 19:04:56
有一点补充,对于那个特定的分配情况,甚至有一个更好的成语:int * longest = malloc(sizeof(* longest));''这样可以避免重复类型,所以如果有一天类型改变, everyting仍然一致。 – 2012-08-01 20:16:54
这是用于C还是C++?你应该在这个问题中加入一个标签或其他标签,以便清楚表明,并使其显示在搜索等中。另外,如果它是C++,则应该使用'new'。 – KRyan 2012-08-01 18:56:04