1
プログラムをデバッグしようとすると、私は面白いことに遭遇し、このことの意味を疑問に思っていました。ダイナミックアレイとスタティックアレイの型名が異なるのはなぜですか? (C++)
私は、配列を動的にまたは静的に定義して、異なるタイプ名を得ることに気付きました。例
#include <iostream>
#include <typeinfo>
int main()
{
int a[10];
int *b = new int[10];
int c[5][10];
int **d = new int*[5];
for (size_t i = 0; i < 5; ++i)
d[i] = new int[10];
std::cout << typeid(a).name() << std::endl;
std::cout << typeid(b).name() << std::endl;
std::cout << typeid(c).name() << std::endl;
std::cout << typeid(d).name() << std::endl;
return 0;
}
のために私は出力
A10_i
Pi
A5_A10_i
PPi
を取得し、私はHDF5形式にPPi
データを書き込むの問題を有するが、これらのタイプが異なっていて、どのようにそれらが異なる理由として興味がありますしています。
「b」と「d」は配列ではなく、(ヒープ割り当て配列の最初の要素への)ポインタです。出力から集めると、「A」は配列、「P」は配列、ポインタ用です。 –
配列はC++で独自の型を持っています。おそらく、関数にパラメータとして渡されたときにポインタに崩壊するので、あなたは混乱しているでしょう。 – 101010
私は混乱がどこにあるのかと思います。彼らの私の使用の大部分について、彼らは同じように行動しました。私はそれが「Pointer int」であることを理解していますが、彼らは行動が違っていることを認識しませんでした。私は興味があります。 –