2

誰かがコードのこれらの部分を私に説明してもらえますか? 私が間違っている場合は修正してください。

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

これは次のことを意味しますか:

  1. サイズが 4 バイトのメモリ ブロックの先頭を指すポインタを返します (32 ビット マシンの場合)? ただ書いてみませんmalloc(4)か?
  2. 2行目、最長は0から始まる4バイトブロックのポインタということですか?
4

1 に答える 1

6
  1. はい、1つに十分なメモリを取得しますint。特定のサイズを明示的に想定することは避けてください。将来、他のプラットフォームに移植するのは悪夢になります。あなたはそれを自分で見つけました-sizeof(int)どこでも常に4になるとは限りません。

  2. いいえ、これにより、によってポイントされた、新しく割り当てられたメモリに値0が割り当てられますlongest。ここ*に間接参照演算子があります。これは、「このポインターが指すものを操作したい」と非公式に言っています。

于 2012-08-01T18:56:19.667 に答える