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: ★ int *ptr; があるとき、ptr の指す先から i 個先のデータを取得するには?
ptr+i
*ptr + i
ptr(i)
*(ptr + i)
Q2: ★★★ 環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; と、Node *ptr1, *ptr2; があるとき、ptr1 の次に ptr2 を相互にリンクするコードはどれか?
ptr1->next = ptr2; ptr2->prev = ptr1;
ptr1->next = ptr2->next; ptr2->prev = ptr1->prev;
ptr1->next = ptr2->prev; ptr2->prev = ptr1->next;
ptr1->next = ptr2->next->next; ptr2->prev = ptr1->prev->prev;
Q3: ★ char へのポインタ ptr の指す先のデータを ch に代入するには?
ch = ptr++;
ch = ptr;
ch = &ptr;
ch = *ptr;
Q4: ★★ int型で引数無しの関数(例:int foo())へのポインタ ptr を宣言するのはどれ?
(int *)ptr();
int *ptr();
int (*ptr)();
int *() ptr;
Q5: ★★ char *ptr が文字列を指している時、指している先が半角空白またはタブならポインタを進める最も簡潔なコードは以下の中でどれ?
while (*ptr++ == ' ' || *ptr == '\t') {}
while (*ptr++ == ' ' || *ptr++ == '\t') {}
while (*ptr == ' ' || *ptr++ == '\t') {}
while (*ptr == ' ' || *ptr == '\t') ++ptr;
Q6: ★ int *ptr = (int *)0x100; ++ptr; を実行した後の、ptr の値はいくつ?
0x102
0x101
0x100
0x104
Q7: ★ x の値を 123 にしたい。以下のソースの (※) 部分には何と記述すればよいか?int x = 0; int *ptr = &x; (※) = 123;
ptr[1]
*ptr
ptr
**ptr
Q8: ★ char *ptr; の指す先が '\0' と等しいかどうかを判定するのは?
if (ptr[] == '\0') { ... }
if (&ptr == '\0') { ... }
if (*ptr == '\0') { ... }
if (ptr == '\0') { ... }
Q9: ★★ 2分木ノード構造体 struct Node { int val; Node *lhs; Node *rhs; }; があり、lhs以下の値 <= va l<= rhs以下の値 になるようソートされている時、木の内容を小さい順に表示する関数はどれ?
void print(Node *ptr) { if( ptr != 0 ) { cout << ptr->val; print(ptr->lhs); print(ptr->rhs); } }
void print(Node *ptr) { if( ptr != 0 ) { print(ptr->lhs); cout << ptr->val; print(ptr->rhs); } }
void print(Node *ptr) { if( ptr != 0 ) { print(ptr->rhs); cout << ptr->val; print(ptr->lhs); } }
void print(Node *ptr) { if( ptr != 0 ) { cout << ptr->val; print(ptr->rhs); print(ptr->lhs); } }
Q10: ★★ 2分木ノード構造体 struct Node { int val; Node *lhs; Node *rhs; }; があるとき、木の内容を全て表示する関数はどれ?
void print(Node *ptr) { if( ptr != 0 ) { cout << ptr->lhs; cout << ptr->val; cout << ptr->rhs; } }
void print(Node *ptr) { cout << ptr->lhs; cout << ptr->val; cout << ptr->rhs; }
void print(Node *ptr) { if( ptr != 0 ) { print(ptr->lhs); cout << ptr->val; print(ptr->rhs); } }
void print(Node *ptr) { print(ptr->lhs); cout << ptr->val; print(ptr->rhs); }


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

最近10人の平均点:4.1
5 4 8 4 1 6 4 4 2 3 (latest)
最近100人の平均点:4.4
最近1000人の平均点:4.7
過去全部(3944人)の平均点:5.0

満点獲得者名と記念コメント:
17/04/22 05:15 名無し さん
17/04/20 15:31 名無し さん
 「やっと…」
17/04/18 11:26 名無し さん
17/04/15 16:29 名無し さん
17/04/11 12:32 名無し さん
17/04/08 23:28 名無し さん
17/04/06 11:55 名無し さん
17/04/03 02:58 名無し さん
17/04/02 21:58 名無し さん
 「foobar」
17/04/01 11:06 名無し さん
17/03/30 14:51 名無し さん
17/03/28 05:23 名無し さん
17/03/26 23:51 名無し さん
17/03/25 07:28 名無し さん
17/03/22 23:41 名無し さん
17/03/19 20:08 名無し さん
17/03/17 10:27 名無し さん
17/03/15 02:21 名無し さん
17/03/12 04:10 名無し さん
17/03/09 04:17 名無し さん

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

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