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 = "abcd"; の時、ptr[2] は何を返しますか?
'c'
'd'
'a'
'b'
Q2: ★★ ダミーノード付き環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; があり、Node *root; がダミーノードを指しているとき、リストの内容を全て表示するコードはどれ?
Node *ptr = root->next; while ((ptr = ptr->next) != root) { cout << ptr->val; }
Node *ptr = root; while (ptr != root) { cout << ptr->val; ptr = ptr->next; }
Node *ptr = root; while ((ptr = ptr->next) != root) { cout << ptr->val; }
Node *ptr = root; while ((ptr = ptr->next) != root) { cout << ptr->val; ptr = ptr->next; }
Q3: ★ 1バイトは何ビット?
4bit
32bit
8bit
16bit
Q4: ★★ char *str に文字 c を n 個の書き込み、終端記号 '\0' を付加するコードはどれ?
for(int i = 0; i < n; ++i) { *(++str+i) = c; } str[n] = '\0';
for(int i = 0; i < n; ++i) { *(str+i) = c; } str[n] = '\0';
for(int i = 0; i < n; ++i) { *str = c; } str[n] = '\0';
for(int i = 0; i < n; ++i) { *(str++ + i) = c; } str[n] = '\0';
Q5: ★ int へのポインタへのポインタ pptr を宣言するには?
int pptr**;
int **pptr;
int *pptr*;
int pptr;
Q6: ★ char *ptr; の指す先が '\0' と等しいかどうかを判定するのは?
if (ptr[] == '\0') { ... }
if (*ptr == '\0') { ... }
if (&ptr == '\0') { ... }
if (ptr == '\0') { ... }
Q7: ★★ 環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; が定義されていて、Node *ptr1, *ptr2, *ptr3; があり、それぞれの値が 0x100, 0x200, 0x300 で、ptr1 の次が pt2、ptr2 の次が ptr3 とするとき、ptr2->prev, ptr2->next の値はいくつ?
0x200, 0x100
0x100, 0x200
0x200, 0x300
0x100, 0x300
Q8: ★★ 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) { 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; }
Q9: ★ short *p1 = (short *)0x100; short *p2 = (short *)0x110; の時、p2 - p1 の値はいくつですか?
2
16
4
8
Q10: ★ char *ptr = (char *)0x100; char *ptr2 = ++ptr; を実行した後の、ptr2 の値はいくつ?
0x102
0x104
0x100
0x101


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

最近10人の平均点:4.4
0 4 6 5 0 7 7 3 9 3 (latest)
最近100人の平均点:5.4
最近1000人の平均点:4.7
過去全部(5702人)の平均点:4.9

満点獲得者名と記念コメント:
18/04/21 11:43 名無し さん
18/04/20 04:08 名無し さん
18/04/15 06:08 名無し さん
18/04/14 15:32 名無し さん
18/04/10 20:04 名無し さん
18/04/10 13:11 kei-01g さん
18/04/10 02:08 名無し さん
18/04/05 10:57 名無し さん
18/04/04 08:27 名無し さん
18/04/04 03:51 名無し さん
18/03/30 14:18 名無し さん
18/03/30 02:09 名無し さん
18/03/28 16:07 名無し さん
18/03/21 04:22 名無し さん
18/03/19 13:29 名無し さん
18/03/15 15:47 名無し さん
18/03/08 08:08 名無し さん
18/03/01 03:41 名無し さん
18/02/23 15:12 名無し さん
18/02/16 14:36 名無し さん

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

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