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: ★★ 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) { 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) { if( ptr != 0 ) { cout << ptr->lhs; cout << ptr->val; cout << ptr->rhs; } }
Q2: ★ char *ptr = (char *)0x100; char *ptr2 = --ptr; を実行した後の、ptr2 の値はいくつ?
0x0fe
0x0fc
0x100
0x0ff
Q3: ★ int *p1 = (int *)0x100; int *p2 = (int *)0x110; の時、p2 - p1 の値はいくつですか?
2
16
8
4
Q4: ★ 構造体 struct Hoge { int val; }; が定義されているとき、Hoge データを100個生成し、その先頭アドレスを ptr に代入するには?
Hoge *ptr = new Hoge ^ 100;
Hoge *ptr = new Hoge * 100;
Hoge *ptr = new Hoge[100];
Hoge *ptr = new Hoge & 100;
Q5: ★★★ 単方向リンクリスト構造体 struct Node { int val; Node *next}; と、Node *ptr1; Node *ptr2; があるとき、ptr1 の次に ptr2 をリンクするコードはどれ?
ptr1->next = ptr2->next;
ptr2->next = ptr1->next;
ptr1->next = ptr2;
ptr2->next = ptr1;
Q6: ★★★ 環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; と、Node *ptr1, *ptr2; があるとき、ptr1 の次に ptr2 を相互にリンクするコードはどれか?
ptr1->next = ptr2->prev; ptr2->prev = ptr1->next;
ptr1->next = ptr2->next; ptr2->prev = ptr1->prev;
ptr1->next = ptr2; ptr2->prev = ptr1;
ptr1->next = ptr2->next->next; ptr2->prev = ptr1->prev->prev;
Q7: ★★ 文字列 char *src を char *dst にコピーするソースはどれ?
while ((*++dst = *src++) != '\0') {}
while ((*dst++ = *src++) != '\0') {}
while ((*dst++ = *++src) != '\0') {}
while ((*++dst = *++src) != '\0') {}
Q8: ★★ int型で引数無しの関数(例:int foo())へのポインタ型 func_t を typedef で定義するコードはどれ?
typedef int () func_t;
typedef int *func_t();
typedef int () *func_t;
typedef int (*func_t)();
Q9: ★ char へのポインタ ptr を宣言し、char x; のアドレスで初期化するには?
char *ptr = &x;
char *ptr = *x;
char *ptr = x[];
char *ptr = x;
Q10: ★★ char *str の末尾 n 文字を削除するコードはどれ?ただし、str の文字数を len とし、len >= n とする。
str[len] = '\0';
str[n - len] = '\0';
str[n] = '\0';
str[len - n] = '\0';


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

最近10人の平均点:5.0
7 0 2 9 2 7 6 10 7 0 (latest)
最近100人の平均点:4.4
最近1000人の平均点:5.1
過去全部(6512人)の平均点:5.0

満点獲得者名と記念コメント:
18/08/14 20:25 名無し さん
18/08/09 02:51 名無し さん
18/07/29 07:50 名無し さん
18/07/18 06:29 名無し さん
18/07/17 19:08 Genghis さん
18/07/13 17:18 さん
18/07/13 06:19 名無し さん
18/07/12 13:38 名無し さん
18/07/04 05:01 名無し さん
18/06/30 14:04 名無し さん
18/06/29 16:09 猿年 さん
18/06/29 13:14 暇人の烙印 さん
18/06/28 17:23 エルフの女 さん
18/06/28 16:47 グランドマスター さん
18/06/28 16:41 かかかかか さん
18/06/28 16:24 おおおおお さん
18/06/28 15:21 えええええ さん
18/06/28 15:10 ううううう さん
18/06/28 11:17 いいいいい さん
18/06/27 15:03 あああああ さん

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

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