这是在C中初始化二维chars数组的代码 该数组是3X3的字符 我正在为ubuntu使用Eclipse C / C ++ IDE 当使用此功能时,GCC会输出如下错误: 的 下标值既不是数组也不是指针也不是向量 的的 什么是错误的意思,任何人都可以帮助我,提前谢谢:)
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]=' ';
}
}
}
答案 0 :(得分:0)
应定义为char** ptr
init()
的参数。
答案 1 :(得分:0)
你只在init中传递一个指针。如果是3x3,那么您需要将签名更改为:
void init(char **ptr){ ... }
访问指针时,可以:
ptr[i][j] = '';
或
(*(ptr[i])+j) = '';
或
(*(*(ptr+i))+j) = '';
答案 2 :(得分:0)
ptr
是pointer
到char
而不是char[][]
。所以你应该使用**ptr
或char (*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]=' ';
}
}
}
答案 3 :(得分: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]=' ';
}
}
}