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 = (char *)0x100; ++ptr; を実行した後の、ptr の値はいくつ?
0x101
0x102
0x104
0x100
Q2: ★ char *ptr = new char[100]; でアロケートしたデータを解放する正しい方法は?
delete [] ptr;
free(ptr);
delete(ptr);
delete [ptr];
Q3: ★★ 以下のなかで正しいソースコードはどれ?
const char *dup(const char *s) { char *d = new char[strlen(s)]; char *t = d; while( *d++ = *s++) ; return t; }
void setZero(char * const dst, int n) { for(int i = 0; i < n; ++i) *dst++ = 0; }
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++ ) {} }
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[i] = c; } str[n] = '\0';
for(int i = 0; i < n; ++i) { str[i] = c; ++str; } str[n] = '\0';
Q5: ★★★ 単方向リンクリスト構造体 struct Node { int val; Node *next}; があり、Node *ptr; が3つ以上連続するノードリストを指しているとき、ptr が指すノードの次のノードをリストから削除するコードはどれ?
ptr->next = ptr->next;
ptr->next = 0;
ptr->next = ptr->next->next->next;
ptr->next = ptr->next->next;
Q6: ★★ int型で引数無しの関数(例:int foo())へのポインタ ptr がある関数を指しているとき、それをコールするコードはどれ?
ptr();
*ptr();
*ptr;
ptr*();
Q7: ★★ int型で引数無しの関数(例:int foo())へのポインタ型 func_t を typedef で定義するコードはどれ?
typedef int () func_t;
typedef int (*func_t)();
typedef int *func_t();
typedef int () *func_t;
Q8: ★ char *ptr; の指す先が '\0' と等しいかどうかを判定するのは?
if (ptr[] == '\0') { ... }
if (*ptr == '\0') { ... }
if (&ptr == '\0') { ... }
if (ptr == '\0') { ... }
Q9: ★ char *ptr が文字列を指している時、指している先が英小文字かどうかを判定するコードはどれ?
if( *ptr >= 'a' || *ptr <= 'z' ) { ... }
if( *ptr >= 'a' && *ptr <= 'z' ) { ... }
if( *ptr >= 'z' && *ptr <= 'a' ) { ... }
if( *ptr >= 'z' || *ptr <= 'a' ) { ... }
Q10: ★ 16進数 0x100 を 10進数に変換するといくつでしょうか?
256
262
258
260


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

最近10人の平均点:2.5
8 0 7 0 0 1 0 1 7 1 (latest)
最近100人の平均点:4.6
最近1000人の平均点:4.9
過去全部(3839人)の平均点:5.1

満点獲得者名と記念コメント:
17/03/26 23:51 名無し さん
17/03/25 07:28 名無し さん
17/03/22 23:41 名無し さん
17/03/19 20:08 名無し さん
17/03/17 10:27 名無し さん
17/03/15 02:21 名無し さん
17/03/12 04:10 名無し さん
17/03/09 04:17 名無し さん
17/03/06 16:06 名無し さん
17/03/03 16:21 名無し さん
17/03/03 06:26 名無し さん
17/02/28 03:41 名無し さん
17/02/24 18:26 名無し さん
17/02/22 07:26 名無し さん
17/02/21 17:20 hoge さん
 「hogepiyo」
17/02/20 07:41 名無し さん
17/02/18 04:14 名無し さん
17/02/17 06:44 名無し さん
17/02/15 16:35 名無し さん
17/02/13 03:43 名無し さん

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

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