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: ★ char *ptr が文字列を指している時、指している先が数字文字かどうかを判定するコードはどれ?
if( *ptr >= 0 || *ptr <= 9 ) { ... }
if( *ptr >= 0 && *ptr <= 9 ) { ... }
if( *ptr >= '0' && *ptr <= '9' ) { ... }
if( *ptr >= '0' || *ptr <= '9' ) { ... }
Q2: ★ char *p1 = (char *)0x100; char *p2 = (char *)0x110; の時、p2 - p1 の値はいくつですか?
2
8
4
16
Q3: ★ x の値を 123 にしたい。以下のソースの (※) 部分には何と記述すればよいか?int x = 0; int *ptr = &x; (※) = 123;
ptr
**ptr
ptr[1]
*ptr
Q4: ★★ 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->rhs); print(ptr->lhs); } }
void print(Node *ptr) { if( ptr != 0 ) { print(ptr->rhs); cout << ptr->val; print(ptr->lhs); } }
void print(Node *ptr) { if( ptr != 0 ) { print(ptr->lhs); cout << ptr->val; print(ptr->rhs); } }
void print(Node *ptr) { if( ptr != 0 ) { cout << ptr->val; print(ptr->lhs); print(ptr->rhs); } }
Q5: ★★ int型で引数無しの関数(例:int foo())へのポインタ ptr を宣言するのはどれ?
int *() ptr;
int (*ptr)();
int *ptr();
(int *)ptr();
Q6: ★ あ~りんのほっぺは?
つるっつる
ぴちっぴち
ぷにっぷに
ぷるっぷる
Q7: ★★★ 単方向リンクリスト構造体 struct Node { int val; Node *next}; があり、Node *ptr; が3つ以上連続するノードリストを指しているとき、ptr が指すノードの次のノードをリストから削除するコードはどれ?
ptr->next = ptr->next->next->next;
ptr->next = ptr->next;
ptr->next = ptr->next->next;
ptr->next = 0;
Q8: ★★ char *src; char *dst; があるとき、src の指す先のデータひとつを dst の指す先にコピーし、それぞれのポインタをひとつ進めるには?
*dst++ = *++src;
*++dst = *src++;
*dst++ = *src++;
*++dst = *++src;
Q9: ★★★ 環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; と、Node *ptr1, *ptr2; があるとき、ptr1 の次に ptr2 を相互にリンクするコードはどれか?
ptr1->next = ptr2->next->next; ptr2->prev = ptr1->prev->prev;
ptr1->next = ptr2->next; ptr2->prev = ptr1->prev;
ptr1->next = ptr2; ptr2->prev = ptr1;
ptr1->next = ptr2->prev; ptr2->prev = ptr1->next;
Q10: ★★ int型で引数無しの関数(例:int foo())へのポインタ ptr がある関数を指しているとき、それをコールするコードはどれ?
ptr();
*ptr;
*ptr();
ptr*();


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

最近10人の平均点:3.8
4 0 0 2 8 1 7 8 5 3 (latest)
最近100人の平均点:4.4
最近1000人の平均点:4.8
過去全部(4100人)の平均点:5.0

満点獲得者名と記念コメント:
17/05/23 13:13 名無し さん
17/05/23 03:37 名無し さん
17/05/19 21:29 名無し さん
17/05/19 17:43 名無し さん
17/05/16 23:02 名無し さん
17/05/15 01:20 名無し さん
17/05/13 07:06 名無し さん
17/05/10 03:56 名無し さん
17/05/06 03:09 名無し さん
17/05/03 03:11 名無し さん
17/04/30 03:41 名無し さん
17/04/29 19:45 名無し さん
17/04/26 03:31 名無し さん
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 名無し さん

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

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