0

これは、Cでcharの2D配列を初期化するためのコードです。配列はubuntuにEclipse C / C ++ IDEを使用している文字の3X3であり、この関数を使用すると、GCCは次のようなエラーを出力します 。ベクトル tisエラーは何を意味しますか、誰かが私を助けてくれますか、事前に感謝します:)

void init(char* ptr)
{
    int i=0;
    int j=0;
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            *ptr[i][j]=' ';
        }
    }
}
4

4 に答える 4

0

char** ptrの引数として定義する必要がありinit()ます。

于 2013-02-18T14:18:32.920 に答える
0

ouはinitに1つのポインタだけを渡します。3x3の場合は、署名を次のように変更する必要があります。

 void init(char **ptr){ ... }

そして、ポインタにアクセスするときは、次のいずれかを行います。

ptr[i][j] = '';

また

(*(ptr[i])+j) = '';

また

(*(*(ptr+i))+j) = '';
于 2013-02-18T14:19:03.127 に答える
0

ptrないpointerことです。だからあなたはまたはを使用する必要がありますcharchar[][]**ptrchar (*ptr)[size_of_2nd_dimension]

または単純:

void init(char (*ptr)[size2]) <-----
{
    int i=0;
    int j=0;
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            ptr[i][j]=' ';
        }
    }
}
于 2013-02-18T14:20:55.023 に答える
0

関数は配列のサイズを推測できませんが、それなのでc自分で操作を行うことができます(2つのオプション):

void initA(char* ptr, int totalSize)
{
    int i=0;
    int j=0;
    for(i=0;i<totalSize;i++)
    {
        *ptr[i]=' ';
    }
}

void initB(char* ptr, int sizeX, int sizeY)
{
    int i=0;
    int j=0;
    for(i=0;i<sizeX;i++)
    {
        for(j=0;j<sizeY;j++)
        {
            *ptr[(i * sizeY) + j]=' ';
        }
    }
}
于 2013-02-18T14:37:04.710 に答える