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 *src; char *dst; があるとき、src の指す先のデータひとつを dst の指す先にコピーし、それぞれのポインタをひとつ進めるには?
*++dst = *src++;
*dst++ = *src++;
*++dst = *++src;
*dst++ = *++src;
Q2: ★ 構造体 struct Hoge { int val; }; が定義され、Hoge a が定義さているとき、Hoge へのポインタ ptr を宣言し、a のアドレスで初期化するには?
Hoge *ptr = new a;
Hoge *ptr = *a;
Hoge *ptr = &a;
Hoge *ptr = a;
Q3: ★ char *ptr が文字列を指している時、指している先が英小文字かどうかを判定するコードはどれ?
if( *ptr >= 'z' || *ptr <= 'a' ) { ... }
if( *ptr >= 'z' && *ptr <= 'a' ) { ... }
if( *ptr >= 'a' && *ptr <= 'z' ) { ... }
if( *ptr >= 'a' || *ptr <= 'z' ) { ... }
Q4: ★★ int d[] = {0, 1, 2, 3}; int *ptr = d; int **pp = &ptr; *pp += 1; の時、*ptr の値は何か?
0
2
1
3
Q5: ★ int data[100] がある時、配列の先頭アドレスを int *ptr に設定するには?
ptr = data[];
ptr = data;
ptr = &data;
ptr = data[0];
Q6: ★ x の値を 123 にしたい。以下のソースの (※) 部分には何と記述すればよいか?int x = 0; int *ptr = &x; (※) = 123;
ptr[1]
**ptr
*ptr
ptr
Q7: ★ char *foo, bar; と宣言した時、bar の型は何?
int 型
int へのポインタ型
char へのポインタ型
char 型
Q8: ★ char へのポインタ ptr を宣言し、char x; のアドレスで初期化するには?
char *ptr = *x;
char *ptr = x[];
char *ptr = x;
char *ptr = &x;
Q9: ★★★ 単方向リンクリスト構造体 struct Node { int val; Node *next}; があり、Node *ptr; が最初のノードへのポインタを指している時、ptr を末尾のノードまで進めるコードはどれ?ただし、リストは空ではなく、末尾のノードの next は 0 とする。
while (ptr->next != 0) { ptr = ptr->next; }
while (ptr != 0) { ptr = ptr->next; }
while (ptr != 0) { ++ptr; }
while (ptr->next != 0) { ++ptr; }
Q10: ★★ 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); } }


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

最近10人の平均点:3.2
1 0 0 0 0 10 9 10 2 0 (latest)
最近100人の平均点:5.2
最近1000人の平均点:4.5
過去全部(11758人)の平均点: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.