0

这是在 C 中初始化 2D 字符数组的代码 该数组是 3X3 的字符 我在 ubuntu 上使用 Eclipse C/C++ IDE,当使用此函数时,GCC 输出如下错误: 下标值既不是数组也不是指针,也不是vector tis error 是什么意思,谁能帮帮我,提前谢谢:)

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

该函数无法猜测数组的大小,但由于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 回答
0

你在 init 中只传递了一个指针。如果是 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 回答