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 の値はいくつ?
0x100
0x101
0x104
0x102
Q2: ★ short *p1 = (short *)0x100; short *p2 = (short *)0x110; の時、p2 - p1 の値はいくつですか?
8
4
16
2
Q3: ★★★ 環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; があり、Node *ptr; が定義されているとき、ptr が指すノードを自分自身とリンクするコードはどれ?
ptr->next = ptr->prev = 0;
ptr->next = ptr - 1; ptr->prev = ptr + 1;
ptr->next = ptr + 1; ptr->prev = ptr - 1;
ptr->next = ptr->prev = ptr;
Q4: ★ char *ptr が文字列を指しているとき、ptr の値を10進数で表示するには?
cout << (int)ptr;
cout << (void *)ptr;
cout << ptr;
cout << *ptr;
Q5: ★★ int型で引数無しの関数(例:int foo())へのポインタ型 func_t を typedef で定義するコードはどれ?
typedef int *func_t();
typedef int (*func_t)();
typedef int () func_t;
typedef int () *func_t;
Q6: ★★ 環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; が定義されていて、Node *ptr1, *ptr2, *ptr3; があり、それぞれの値が 0x100, 0x200, 0x300 で、ptr1 の次が pt2、ptr2 の次が ptr3 とするとき、ptr2->prev, ptr2->next の値はいくつ?
0x200, 0x300
0x200, 0x100
0x100, 0x300
0x100, 0x200
Q7: ★ char *ptr = (char *)0x100; char *ptr2 = ptr--; を実行した後の、ptr2 の値はいくつ?
0x100
0x0fc
0x0ff
0x0fe
Q8: ★ void foo(char *, int *); という関数があり、char *ptr; char ch; int data[10], int x; が定義されているとき、以下のなかで正しくないのはどれ?
foo(&ch, data);
foo(ptr, &x);
foo(&ch, &x);
foo(ptr, &data);
Q9: ★★ 文字列 char *str の先頭1文字を削除するコードはどれ?ただし、str は空文字列ではなく、文字数は int len; に入っているものとする。
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';
for(int i = len; --i > 0 ) { str[i] = str[i+1]; } str[len-1] = '\0';
char *src = str + 1; while ((*str++ = *src++) != '\0') {}
Q10: ★★★ 環状双方向リンクリスト構造体 struct Node { int val; Node *prev; Node *next}; と、Node *ptr1, *ptr2; があるとき、ptr1 の次に ptr2 を相互にリンクするコードはどれか?
ptr1->next = ptr2; ptr2->prev = ptr1;
ptr1->next = ptr2->prev; ptr2->prev = ptr1->next;
ptr1->next = ptr2->next->next; ptr2->prev = ptr1->prev->prev;
ptr1->next = ptr2->next; ptr2->prev = ptr1->prev;


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

最近10人の平均点:4.3
4 0 1 5 6 6 6 8 0 7 (latest)
最近100人の平均点:4.9
最近1000人の平均点:4.7
過去全部(11883人)の平均点: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.