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 *ptr1; char *ptr2; があるとき、それぞれのポインタの指す先のデータを交換するコードはどれ?char t; は宣言済みとする。
*ptr2 = *ptr1; t = *ptr1; *ptr1 = t;
t = *ptr1; *ptr2 = *ptr1; *ptr1 = t;
*ptr1 = *ptr2; t = *ptr1; *ptr2 = t;
t = *ptr1; *ptr1 = *ptr2; *ptr2 = t;
Q2: ★★ 環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; があり、Node *ptr; が空でないリストの先頭を指しているとき、ptr をリスト末尾に移動するコードはどれ?
while (ptr->prev) ptr = ptr->prev;
ptr = ptr->prev;
ptr = ptr->next;
while (ptr->next) ptr = ptr->next;
Q3: ★ char *ptr が英大文字を指している時、それを英小文字('A' ならば 'a' )に変換するコードはどれ?
*ptr = *ptr - 'A' + 'a';
*ptr = *ptr + 'A' - 'a';
*ptr = *ptr + 'A' + 'a';
*ptr = *ptr - 'A' - 'a';
Q4: ★ char へのポインタ ptr の指す先の次のデータを ch に代入するには?
ch = ++*ptr;
ch = *++ptr;
ch = *ptr;
ch = *ptr++;
Q5: ★★ 文字列 char *str の先頭1文字を削除するコードはどれ?ただし、str は空文字列ではなく、文字数は int len; に入っているものとする。
for(int i = len; --i > 0 ) { str[i] = str[i+1]; } str[len-1] = '\0';
char *src = str + 1; while ((*str++ = *src++) != '\0') {}
for(int i = len; --i >= 0 ) { str[i] = str[i+1]; }
for(int i = len - 1; --i >= 0 ) { str[i] = str[i+1]; } str[len-1] = '\0';
Q6: ★★ 以下のなかで正しい文字数を返さないコードはどれ?
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 i = 0; for(; str[i]; ++i) ; return i; }
int strlen(char *s) { int len = 0; while( *str++ ) ++len; return len; }
Q7: ★ int data[100] がある時、配列の先頭アドレスを int *ptr に設定するには?
ptr = data;
ptr = &data;
ptr = data[];
ptr = data[0];
Q8: ★★★ 環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; があり、Node *ptr; が定義されているとき、ptr が指すノードを自分自身とリンクするコードはどれ?
ptr->next = ptr->prev = 0;
ptr->next = ptr->prev = ptr;
ptr->next = ptr - 1; ptr->prev = ptr + 1;
ptr->next = ptr + 1; ptr->prev = ptr - 1;
Q9: ★ char *ptr = (char *)0x100; ++ptr; を実行した後の、ptr の値はいくつ?
0x104
0x100
0x101
0x102
Q10: ★ char *ptr; が宣言されているとき *ptr の型は何?
char へのポインタへのポインタ
char へのポインタ
char
void 型


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

最近10人の平均点:5.5
2 3 5 8 8 9 10 0 7 3 (latest)
最近100人の平均点:4.1
最近1000人の平均点:4.6
過去全部(5343人)の平均点:5.0

満点獲得者名と記念コメント:
18/02/16 14:36 名無し さん
18/02/13 03:19 名無し さん
18/02/09 08:58 名無し さん
18/02/06 08:17 名無し さん
18/02/02 23:02 名無し さん
18/02/02 13:45 ARK さん
 「AAA」
18/01/31 12:38 ark さん
 「ああ」
18/01/22 11:50 名無し さん
18/01/18 11:22 ark さん
 「二人も満点目指してください。」
18/01/17 00:16 名無し さん
18/01/12 09:29 名無し さん
18/01/05 11:03 名無し さん
18/01/04 17:58 名無し さん
18/01/04 12:40 名無し さん
17/12/31 14:02 名無し さん
17/12/29 06:29 名無し さん
17/12/19 11:28 名無し さん
17/12/18 14:08 名無し さん
 「一ヶ月ぶり」
17/12/17 05:25 名無し さん
17/12/11 15:08 名無し さん

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

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