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: ★ short *p1 = (short *)0x100; short *p2 = (short *)0x110; の時、p2 - p1 の値はいくつですか?
8
16
4
2
Q2: ★★ char *ptr1; char *ptr2; があるとき、それぞれのポインタの指す先のデータを交換するコードはどれ?char t; は宣言済みとする。
t = *ptr1; *ptr1 = *ptr2; *ptr2 = t;
*ptr1 = *ptr2; t = *ptr1; *ptr2 = t;
*ptr2 = *ptr1; t = *ptr1; *ptr1 = t;
t = *ptr1; *ptr2 = *ptr1; *ptr1 = t;
Q3: ★★ #define CHARPTR char* とし、CHARPTR p1, p2; と宣言した時の p2 の型は何?
char へのポインタへのポインタ型
void 型
char 型
char へのポインタ型
Q4: ★ strdup(char *str) のためにメモリをアロケートするのはどれが正しい?ただし、str の文字数を len とする。
new char[len*2]
new char[len]
new char[len-1]
new char[len+1]
Q5: ★★ 以下のなかで正しい文字数を返さないコードはどれ?
int strlen(char *s) { char *p = s; while( *str++ ) ; return s - p; }
int strlen(char *s) { int i = 0; for(; str[i]; ++str) ; return i; }
int strlen(char *s) { int len = 0; while( *str++ ) ++len; return len; }
int strlen(char *s) { int i = 0; for(; str[i]; ++i) ; return i; }
Q6: ★★ 単方向リンクリスト構造体 struct Node { int val; Node *next}; が定義されていて、Node ptr; がリストを先頭を指しているとき、リストの内容を表示するコードはどれ?ただしリストが空の場合は ptr は 0 だとする。
do { cout << ptr->val; } while ((ptr = ptr->next) != 0);
while (ptr != 0) { cout << ptr->val; ptr = ptr->next; }
do { cout << ptr->val; ptr = ptr->next; } while (ptr != 0);
while ((ptr = ptr->next) != 0) { cout << ptr->val; }
Q7: ★★ 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';
Q8: ★ char *foo, bar; と宣言した時、bar の型は何?
int へのポインタ型
char 型
int 型
char へのポインタ型
Q9: ★★ int型で引数無しの関数(例:int foo())へのポインタ ptr がある関数を指しているとき、それをコールするコードはどれ?
*ptr;
ptr*();
*ptr();
ptr();
Q10: ★ char *ptr = "abcd"; の時、*++ptr は何を返しますか?
'c'
'b'
'a'
'd'


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

最近10人の平均点:4.5
6 8 5 4 0 5 3 3 5 6 (latest)
最近100人の平均点:5.6
最近1000人の平均点:4.6
過去全部(11854人)の平均点:5.0

満点獲得者名と記念コメント:
25/05/31 01:37 名無し さん
25/05/13 16:09 名無し さん
25/05/11 02:47 名無し さん
25/03/13 07:38 名無し さん
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 名無し さん

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

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