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: ★★★ 環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; があり、Node *ptr; が定義されているとき、ptr が指すノードを自分自身とリンクするコードはどれ?
ptr->next = ptr->prev = ptr;
ptr->next = ptr + 1; ptr->prev = ptr - 1;
ptr->next = ptr - 1; ptr->prev = ptr + 1;
ptr->next = ptr->prev = 0;
Q2: ★★ 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[i] = c; ++str; } str[n] = '\0';
for(int i = 0; i < n; ++i) { str[i] = c; } str[n] = '\0';
Q3: ★★ typedef char* charptr とし、charptr p1, p2; と宣言した時の p2 の型は何?
char へのポインタへのポインタ型
char へのポインタ型
char 型
void 型
Q4: ★ char 型のデータ100個を new でアロケートするのは?
new char[100];
new char*100;
new char{100};
new char(100);
Q5: ★★ 以下のなかで正しいソースコードはどれ?
const char *dup(const char *s) { char *d = new char[strlen(s)]; char *t = d; while( *d++ = *s++) ; return t; }
void setZero(const char *dst, int n) { for(int i = 0; i < n; ++i) *dst++ = 0; }
void copy(const char *src, const char *dst) { while( *dst++ = *src++ ) {} }
void setZero(char * const dst, int n) { for(int i = 0; i < n; ++i) *dst++ = 0; }
Q6: ★★ ダミーノード付き環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; があり、Node *root; がダミーノードを指しているとき、リストの内容を全て表示するコードはどれ?
Node *ptr = root; while ((ptr = ptr->next) != root) { cout << ptr->val; ptr = ptr->next; }
Node *ptr = root; while (ptr != root) { cout << ptr->val; ptr = ptr->next; }
Node *ptr = root->next; while ((ptr = ptr->next) != root) { cout << ptr->val; }
Node *ptr = root; while ((ptr = ptr->next) != root) { cout << ptr->val; }
Q7: ★ 構造体 struct Hoge { int val; }; が定義されているとき、Hoge へのポインタ ptr を宣言するには?
Hoge *ptr();
Hoge &ptr;
Hoge *ptr;
Hoge ^ptr
Q8: ★★ 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';
Q9: ★ ポインタ ptr が構造体 Foo のデータを指しているとき、Foo の m_member メンバの値を取得するには?
*ptr.m_member
ptr->m_member
*ptr->m_member
ptr.m_member
Q10: ★★ 環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; があり、Node *ptr; が空でないリストの先頭を指しているとき、ptr をリスト末尾に移動するコードはどれ?
while (ptr->next) ptr = ptr->next;
ptr = ptr->prev;
ptr = ptr->next;
while (ptr->prev) ptr = ptr->prev;


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

最近10人の平均点:3.5
1 7 2 0 4 1 4 6 9 1 (latest)
最近100人の平均点:6.0
最近1000人の平均点:4.7
過去全部(5098人)の平均点:5.0

満点獲得者名と記念コメント:
17/12/07 07:35 名無し さん
17/12/04 17:17 やっと さん
 「満点とれた。」
17/11/29 17:27 名無し さん
 「ポインタじゃなくてdo whileの問題が混じっとる」
17/11/29 08:29 名無し さん
17/11/28 10:08 名無し さん
17/11/23 06:49 名無し さん
17/11/21 00:46 名無し さん
17/11/17 03:52 名無し さん
17/11/11 14:59 名無し さん
17/11/09 16:32 名無し さん
 「久々の…」
17/11/02 14:21 名無し さん
17/10/28 13:18 名無し さん
17/10/22 15:23 名無し さん
17/10/18 17:38 名無し さん
17/10/17 11:14 名無し さん
17/10/15 23:54 名無し さん
17/10/14 16:16 名無し さん
17/10/12 15:28 名無し さん
17/10/09 10:25 名無し さん
17/10/07 11:05 名無し さん

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

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