1

ここでの初心者の質問...次のコードが 1D 配列でのみ機能し、2D 配列では機能しないのはなぜですか? b が char* ポインター (そのまま) である限り、b が 1D 配列または 2D 配列の先頭を指しているかどうかに違いはありませんか? 一般的な表記法 [bound1][bound2] は、代入演算を超えても [bound1*bound2] と同等だと思いました。ヘルプ?

main() //this works fine 
    {
        char *b;
        b = new char[50];
        return 0;
    }

.

main() //but this raises the error "Cannot convert char(*)[50] to char* in assignment"
{
    char *b;
    b = new char[50][50];
    return 0;
}
4

2 に答える 2

0

char[50];タイプ の 50 個の要素の配列ですchar。各要素には type がありcharます。そのnew char[50];ため、最初の要素へのポインターを返します: char *- へのポインターchar

char[50][50]の配列ではありませんchar。配列の配列です。各要素には type がありchar[50]ます。そのnew char[50][50];ため、最初の要素へのポインターを返します: char (*)[50]- へのポインターchar[50]

次のように宣言bします。

char (*b)[50];

テスト: http://ideone.com/1zJs1O

于 2013-10-26T13:40:01.420 に答える