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


 
Follow @vivisuke Tweet

 

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

Q1: ノード構造体が以下のように定義されているとき、親ノード以下のノードを全て delete する関数を完成させなさい。
struct Node {
    int        m_value; // ノードの値
    Node    *m_lhs;   // 左側ノードへのポインタ
    Node    *m_rhs;  // 右側ノードへのポインタ
};
void free(Node *ptr)
{
    if( ptr != 0 ) {
        free(ptr->);
        free(ptr->m_rhs);
         ptr;
    }
}


Q2: プログラム起動時の引数の数を表示するコードは?
#include <iostream>
int main( argc, char *argv[])
{
    std::cout <<  << "\n";
    return 0;
}


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


Q4: 以下の空欄に数字(10進数)を入れなさい
char *ptr1 = 0x100; char *ptr2 = 0x110; のとき、ptr2 - ptr1 の値はです。
int *ptr1 = 0x100; int *ptr2 = 0x110; のとき、ptr2 - ptr1 の値はです。


Q5: 文字数を数える関数を完成させなさい。
int strlen(const char *str)
{
    int i = 0;
    for(; str != ; ++i) {
    }
    return i;
}




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

最近10人の平均点:5.3
9 8 7 0 6 10 2 2 9 0 (latest)
最近100人の平均点:4.7
最近1000人の平均点:3.3
過去全部(3293人)の平均点:4.0

満点獲得者名と記念コメント:
19/12/12 10:56 名無し さん
19/12/06 06:37 名無し さん
19/12/05 11:42 名無し さん
19/12/03 05:04 名無し さん
19/11/26 12:49 名無し さん
19/11/25 12:29 名無し さん
19/11/25 00:29 名無し さん
19/11/22 05:23 名無し さん
19/11/14 12:01 名無し さん
19/11/12 10:43 名無し さん
19/11/03 16:30 名無し さん
19/11/02 06:20 名無し さん
19/10/28 12:51 名無し さん
19/10/28 03:12 名無し さん
19/10/25 03:52 名無し さん
19/10/11 12:18 名無し さん
19/10/05 02:07 名無し さん
19/10/01 01:22 名無し さん
19/09/28 06:28 名無し さん
19/09/26 15:13 名無し さん

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