ViVi Home > 技術文書 > ポインタ入門 > ポインタ穴埋め問題集


 
Follow @vivisuke Tweet

 

ポインタ穴埋め問題集 は C/C++ のポインタを学習するため問題集です。
入力エリアに適切な(半角)文字列を入力し、画面下部の【採点】を押してください。
※ sizeof(void*) は 4、sizeof(int) は 4、sizeof(short) は 2 とする。
※ 文字エンコーディングは ASCII 、文字列は '\0' を終端とする。
※ バイトオーダはリトルエンディアンとする。
※ 文字列領域は充分な領域が確保されているものとする。
※ 特に指示が無い限り、ポインタが指す構造体のメンバを参照する場合は (*ptr).mbr ではなく ptr->mbr と記述しなさい。

Q1: 以下の空欄に数値を入れなさい
16進数の 0x100 を10進数に変換すると 。
16進数の 0x10000 を10進数に変換すると 


Q2: 文字列末尾文字を取り出す関数を完成させなさい。ただし、文字列が空の場合は '\0' を返すものとする。
char pop_back(char *str)
{
    if ( == '\0') return '\0';
    while (*str != '\0') {
        ++str;
    }
    char c = *;
    *str = '\0';
    return c;
}


Q3: int *ptr = new int; でアロケートしたメモリを解放するコードは?
 ;


Q4: 空欄に字句を入れて、変数を正しく宣言しなさい。
const char ptr1 = "hello, world";
const char *table[] = {
    "foo",
    "bar",
    0
};
const char ptr2 = table;


Q5: root が環状双方向リンクリスト先頭を指すとき、ptr をリスト末尾に追加する関数を完成させなさい
struct Node {
    int    m_value; // ノードの値
    Node    *m_prev;// 前のノードへのポインタ
    Node    *m_next;// 次のノードへのポインタ
};
// ptr1 の次に ptr2 を連結
void link(Node *ptr1, Node *ptr2)
{
    ptr1->m_next = ptr2;
    ptr2->m_prev = ptr1;
}
void appendNode(Node *root, Node *ptr)
{
    link(, ptr);
    link();
}




※ 問題は5問ランダムに表示されます。 総問題数:42
※ 問題・解答に間違いがあった場合は、ツイッター or メール等でご指摘してくださると助かります。

最近10人の平均点:2.5
3 9 5 2 3 2 0 0 1 0 (latest)
最近100人の平均点:2.2
最近1000人の平均点:4.2
過去全部(1571人)の平均点:4.6

満点獲得者名と記念コメント:
17/03/26 23:58 名無し さん
17/03/25 07:28 名無し さん
17/03/22 23:40 名無し さん
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/25 07:22 名無し さん
17/02/24 18:26 名無し さん
17/02/22 07:26 名無し さん
17/02/20 07:41 名無し さん
17/02/18 04:35 名無し さん
17/02/17 06:44 名無し さん
17/02/15 16:34 名無し さん
17/02/13 03:43 名無し さん

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