要向前走:我必须用C做一个项目,但是我和我的搭档遇到了错误,我们无法弄清楚如何解决它。它告诉我们,当我们定义1和0时,在switch_statement的每种情况下,“ {”之前的预期表达式都有错误。有人有主意吗?
int **create_block_sh(int height, int width, int desired_shape)
{
int **block = create_2D_dyn(height, width);
switch (desired_shape)
{
case 1 :
block[height][width] = {{1,0,0},
{1,1,0},
{1,1,1}};
break;
case 2:
block[height][width] = {{1,0,0},
{1,0,0},
{1,1,1}};
break;
case 3:
block[height][width] = {{1,0,0},
{1,0,0},
{1,0,0}};
break;
default:
printf("error !!");
break;
}
}
这里是屏幕截图:Screenshot of CodeBlock
[谢谢大家,但在进一步的帮助下,我找到了一个替代方法,它是:block =(int * []){(int []){0,1,1},(int []){1,1, 1},(int []){1,1,0}};这是屏幕截图:[http://prntscr.com/rlco7f]
以下代码错误:
block[height][width] = {{1,0,0},
{1,1,0},
{1,1,1}};
block
是2D整数数组,每个元素只是一个整数。所以这样分配是错误的。
您所能做的就是:
block[height][width] = 1;
此外,这样做是错误的: 区块[高度] = {1,2,3}
您只能在声明数组时做您想做的事,例如:
int arr[3][3] = {{1,0,0},
{1,1,0},
{1,1,1}};
此外,请将每个case
语句的表达式放在大括号内,例如:
switch(...){
case 1:
{
// code
}
}