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: ★ ポインタ ptr が構造体 Foo のデータを指しているとき、Foo の m_member メンバの値を取得するには?
*ptr->m_member
ptr.m_member
*ptr.m_member
ptr->m_member
Q2: ★ char へのポインタ ptr の指す先のデータを ch に代入するには?
ch = ptr++;
ch = *ptr;
ch = &ptr;
ch = ptr;
Q3: ★★ 2分木ノード構造体 struct Node { int val; Node *lhs; Node *rhs; }; があるとき、木の内容を全て表示する関数はどれ?
void print(Node *ptr) { if( ptr != 0 ) { print(ptr->lhs); cout << ptr->val; print(ptr->rhs); } }
void print(Node *ptr) { cout << ptr->lhs; cout << ptr->val; cout << ptr->rhs; }
void print(Node *ptr) { print(ptr->lhs); cout << ptr->val; print(ptr->rhs); }
void print(Node *ptr) { if( ptr != 0 ) { cout << ptr->lhs; cout << ptr->val; cout << ptr->rhs; } }
Q4: ★★ int型で引数無しの関数(例:int foo())へのポインタ ptr がある関数を指しているとき、それをコールするコードはどれ?
ptr*();
*ptr();
*ptr;
ptr();
Q5: ★★ 環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; があり、Node *ptr; が空でないリストの先頭を指しているとき、リストの内容を全て表示するコードはどれ?
Node *root = ptr; while ((ptr = ptr->next) != root) { cout << ptr->val; }
while ((ptr = ptr->next) != 0) { cout << ptr->val; }
do { cout << ptr->va; } while ((ptr = ptr->next) != 0);
Node *root = ptr; do { cout << ptr->val; } while ((ptr = ptr->next) != root);
Q6: ★★ 単方向リンクリスト構造体 struct Node { int val; Node *next}; が定義されていて、Node ptr; がリストを先頭を指しているとき、リストの内容を表示するコードはどれ?ただしリストが空の場合は ptr は 0 だとする。
while ((ptr = ptr->next) != 0) { cout << ptr->val; }
while (ptr != 0) { cout << ptr->val; ptr = ptr->next; }
do { cout << ptr->val; } while ((ptr = ptr->next) != 0);
do { cout << ptr->val; ptr = ptr->next; } while (ptr != 0);
Q7: ★★★ 単方向リンクリスト構造体 struct Node { int val; Node *next}; と、Node *ptr1; Node *ptr2; があるとき、ptr1 の次に ptr2 をリンクするコードはどれ?
ptr1->next = ptr2;
ptr2->next = ptr1->next;
ptr2->next = ptr1;
ptr1->next = ptr2->next;
Q8: ★★ char *ptr が文字列を指している時、指している先が半角空白またはタブならポインタを進める最も簡潔なコードは以下の中でどれ?
while (*ptr++ == ' ' || *ptr++ == '\t') {}
while (*ptr == ' ' || *ptr == '\t') ++ptr;
while (*ptr == ' ' || *ptr++ == '\t') {}
while (*ptr++ == ' ' || *ptr == '\t') {}
Q9: ★ char *ptr が数字文字列を指している時、数字文字を数値に変換するコードはどれ?
*ptr - '\0';
*ptr - '0';
*ptr - '9';
*ptr - 0;
Q10: ★ char *ptr = (char *)0x100; char *ptr2 = ptr--; を実行した後の、ptr2 の値はいくつ?
0x0ff
0x0fc
0x0fe
0x100


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

最近10人の平均点:6.5
0 8 9 5 7 10 5 8 4 9 (latest)
最近100人の平均点:4.1
最近1000人の平均点:5.0
過去全部(6686人)の平均点:4.9

満点獲得者名と記念コメント:
18/10/20 04:24 名無し さん
18/10/19 07:46 名無し さん
18/10/15 13:31 名無し さん
18/10/14 07:33 名無し さん
18/10/10 06:31 名無し さん
18/10/08 02:40 名無し さん
18/10/07 12:07 名無し さん
18/10/02 02:53 名無し さん
18/09/26 06:06 名無し さん
18/09/19 03:44 名無し さん
18/09/17 00:42 名無し さん
18/09/14 14:37 名無し さん
18/09/01 12:05 名無し さん
18/08/28 11:54 名無し さん
18/08/23 03:05 名無し さん
18/08/19 06:44 名無し さん
18/08/14 20:25 名無し さん
18/08/09 02:51 名無し さん
18/07/29 07:50 名無し さん
18/07/18 06:29 名無し さん

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

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