2016-05-18 7 views
-4

Catの後に誰かが**の内容を説明することはできますか?それがポインタへのポインタなら、スペースはないはずですか?「タイプ**変数」とはどういう意味ですか?

Cat fetch_and_kill_oldest(Cat** cat_array, int length){ 
    //This function tries to find the oldest cat, take away one life, 
     Cat temp = cat_array[0]; 
     for(int i = 1; i < length; i++){ 
      if (cat_array[i].age > temp.age){ 
       temp = cat_array[i]; 
      } 
     } 
     temp.lives -= 1; 
     return temp; 
     //stop here 
    } 
+0

「Cat **」では、著者が悪い味をしていることを意味します。 –

+0

"ポインタへのポインタであれば、スペースはないはずですか?":スペースは必要ありません。 '**'はトークンではないので、パーサーはそれを二つの別々の '*'トークンとして認識します。 –

+0

これは、提案された質問のdupではありません。 OPは '**'演算子が何であるかを知っているので、型名との間にスペースがないときの意味を理解できません。 – dbush

答えて

4

この:

Cat** cat_array 

はこれと同じです:それは、ポインタが参照するものをより明確だから

Cat **cat_array 

後者が好ましいです。実際には唯一のaポインタであるとき、一見

int* a, b; 

が、abは両方のポインタであることを表示されることがあります。たとえば、もしあなたがこのような宣言を持っていました。次のように書式を設定すると、より明白になります。

int *a, b; 
関連する問題