5

C++ では、複数のポインターを宣言する場合は、次のようにします。それぞれの前にint *a, *b, *c;アスタリスクを付ける必要があります。*このコードを書くと: typedef int* ptr; ptr a,b,c;? それらはすべてポインターになりますか、それとも単なる a ですか?

4

4 に答える 4

3

うーん、興味深い...見てみましょう。typedef についてあまり知らないとしたら、どうすればよいでしょうか。


答え:自分でテストしています。以下に、質問に答えるコードがあります。

#include <stdio.h>

typedef int* pointer_t;
pointer_t a1, b1, c1;
int* a2, b2, c2;

int main() {
  a1 = new int; // ok
  b1 = new int; // ok
  c1 = new int; // ok
  a2 = new int; // ok
  b2 = new int; // compile-time error
  c2 = new int; // compile-time error

  delete a1; // ok
  delete b1; // ok
  delete c1; // ok
  delete a2; // ok
  delete b2; // compile-time error
  delete c2; // compile-time error

  return 0;
}

結論: a1、b1、および c1 の両方がポインターになりますが、a2 のみがポインターになります。

于 2013-09-10T14:59:00.947 に答える