1

これは私の例です:

#include "stdafx.h"
#include <iostream>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
    int ar[][3] = {1, 2, 3, 4, 5, 6, 7};
    //cout << int[3]<<endl; // error C2062: type 'int' unexpected.
    cout << "sizeof(ar) / sizeof(int[3])  "<< sizeof(ar) / sizeof(int[3]) << endl;; 

    system("pause");

    return 0;
}

説明はありませんが、本からです。ここで int[3] とは何ですか? この場合、それが sizeof の引数としてのみ機能するのはなぜですか?

4

3 に答える 3

4

int[3]3 つの整数の配列を表す型宣言です。

型を変数として使用できないため、コメント付きのコードでエラーが発生します。

于 2013-01-15T17:37:56.837 に答える
2

宣言

int ar[][3] = {1, 2, 3, 4, 5, 6, 7};

は整数のトリプレットの配列用です - これは 2D 配列です。

式のサイズ

cout << "sizeof(ar) / sizeof(int[3])  "<< sizeof(ar) / sizeof(int[3]) << endl;

取得した完全な3 連符の数を出力します。最後の整数 7 はどのトリプレットにも該当しません。2 が表示されるはずです。 ar[0]が含まれ{1, 2, 3}ar[1]含まれます{4, 5, 6}

于 2013-01-15T17:52:17.113 に答える
2

sizeof(int[3])3 つの整数の配列のバイト単位のサイズです。sizeofプログラムの実行中に呼び出される実際の関数ではありません-コンパイル時に解決されます。sizeof(ar) / sizeof(int[3])各行は3つの整数の長さであるため( として宣言しましたint ar[][3])、配列内の行数が得られます。

于 2013-01-15T17:37:50.317 に答える