2

有人可以向我解释这部分代码吗?如果我错了,请纠正我。

int *longest = malloc(sizeof(int)); 
*longest =0;

意思是不是:

  1. 返回一个指向大小为 4 字节的内存块开头的指针(对于 32 位机器)?为什么不直接写malloc(4)
  2. 对于第二行,是否意味着最长的是一个 4 字节块的指针,从 0 开始?
4

1 回答 1

6
  1. 是的,它为一个int. 您应该避免明确假设给定的大小 - 这使得将来移植到其他平台成为一场噩梦。你自己发现了 -sizeof(int)不会总是到处都是 4。

  2. 不,这会将值 0 分配给由 指向的新分配的内存longest。这里*是取消引用运算符,它非正式地说“我想使用这个指针指向的东西”。

于 2012-08-01T18:56:19.667 回答