ViVi Home > 技術文書 > ポインタ入門 > ポインタ4択問題集


 
Follow @vivisuke Tweet

 

pointer's boot camp は C/C++ のポインタを学習するための4択問題集です。
以下の10問の答えを選択し、画面下部の【採点】を押してください。
※ sizeof(void*) は 4、sizeof(int) は 4、sizeof(short) は 2 とする。
※ 文字エンコーディングは ASCII 、文字列は '\0' を終端とする。
※ バイトオーダはリトルエンディアンとする。

Q1: ★★ ダミーノード付き環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; があり、Node *root; がダミーノードを指しているとき、リストの内容を全て表示するコードはどれ?
Node *ptr = root; while ((ptr = ptr->next) != root) { cout << ptr->val; ptr = ptr->next; }
Node *ptr = root; while (ptr != root) { cout << ptr->val; ptr = ptr->next; }
Node *ptr = root; while ((ptr = ptr->next) != root) { cout << ptr->val; }
Node *ptr = root->next; while ((ptr = ptr->next) != root) { cout << ptr->val; }
Q2: ★★ 環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; があり、Node *ptr; が空でないリストの先頭を指しているとき、リストの内容を全て表示するコードはどれ?
Node *root = ptr; do { cout << ptr->val; } while ((ptr = ptr->next) != root);
while ((ptr = ptr->next) != 0) { cout << ptr->val; }
Node *root = ptr; while ((ptr = ptr->next) != root) { cout << ptr->val; }
do { cout << ptr->va; } while ((ptr = ptr->next) != 0);
Q3: ★ char *ptr; が宣言されているとき *ptr の型は何?
char
char へのポインタ
void 型
char へのポインタへのポインタ
Q4: ★★ 環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; があり、Node *ptr; が空でないリストの先頭を指しているとき、ptr をリスト末尾に移動するコードはどれ?
ptr = ptr->prev;
ptr = ptr->next;
while (ptr->prev) ptr = ptr->prev;
while (ptr->next) ptr = ptr->next;
Q5: ★★★ 環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; と、Node *ptr1, *ptr2; があるとき、ptr1 の次に ptr2 を相互にリンクするコードはどれか?
ptr1->next = ptr2->prev; ptr2->prev = ptr1->next;
ptr1->next = ptr2; ptr2->prev = ptr1;
ptr1->next = ptr2->next->next; ptr2->prev = ptr1->prev->prev;
ptr1->next = ptr2->next; ptr2->prev = ptr1->prev;
Q6: ★ char へのポインタ ptr を宣言し、char x; のアドレスで初期化するには?
char *ptr = x;
char *ptr = &x;
char *ptr = x[];
char *ptr = *x;
Q7: ★★ char *ptr が文字列を指している時、指している先が半角空白またはタブならポインタを進める最も簡潔なコードは以下の中でどれ?
while (*ptr == ' ' || *ptr == '\t') ++ptr;
while (*ptr++ == ' ' || *ptr++ == '\t') {}
while (*ptr == ' ' || *ptr++ == '\t') {}
while (*ptr++ == ' ' || *ptr == '\t') {}
Q8: ★★ class Foo がメンバ関数 void func() を持つ時、それへのポインタ ptr を宣言するのはどれ?
void (*Foo::ptr)() = &Foo::func;
void (*Foo)() ptr = &Foo::func;
void (*ptr)() = &Foo::func;
void ()* ptr = &Foo::func;
Q9: ★ x の値を 123 にしたい。以下のソースの (※) 部分には何と記述すればよいか?int x = 0; int *ptr = &x; (※) = 123;
**ptr
*ptr
ptr
ptr[1]
Q10: ★★ int型で引数無しの関数(例:int foo())へのポインタ ptr を宣言するのはどれ?
int *ptr();
int (*ptr)();
(int *)ptr();
int *() ptr;


※ 問題は10問ランダムに表示されます。 総問題数:87

最近10人の平均点:2.9
0 1 4 6 1 2 6 4 5 0 (latest)
最近100人の平均点:5.9
最近1000人の平均点:4.5
過去全部(11797人)の平均点:5.0

満点獲得者名と記念コメント:
25/01/06 18:23 名無し さん
25/01/02 15:12 名無し さん
25/01/01 17:39 名無し さん
24/12/31 07:04 名無し さん
24/12/28 22:20 名無し さん
24/12/26 08:52 名無し さん
24/12/24 04:20 名無し さん
24/12/23 17:24 名無し さん
24/12/21 18:44 名無し さん
24/12/19 16:24 名無し さん
24/12/17 13:42 名無し さん
24/12/17 08:30 名無し さん
24/12/15 00:07 名無し さん
24/12/13 00:18 名無し さん
24/12/10 23:58 名無し さん
24/12/08 22:09 名無し さん
24/11/30 06:35 名無し さん
24/11/27 05:40 名無し さん
24/11/24 06:57 名無し さん
24/11/22 06:15 名無し さん

その他のジャンルの問題もあるよ:

Copyright (C) 2013 by N.Tsuda, All Rights Reserved.