我有个任务:
在主代码中,声明一个二维数组[5][8](关于此事项的声明)。保存setter设置,它将设置各个系数值 根据方案(值 从40减少到1),函数的参数是两个指针,第一个指向第一个元素,第二个指向最后一个元素,这个函数里面只能有一个循环!保存打印配置,屏幕上会显示出来,一个函数参数可以翻译成一个二维数组,用const修饰符,这里是经典的,两个循环打印。
在主代码中:·声明一个二维数组·输入设置配置·正确打印效果
我的代码:
#include <stdio.h>
void set2(int *a, int *b)
{
int start = 40;
for(int *p = a; p < b; p++, start--)
{
*p = start;
}
}
void print3(const int tab[][])
{
for(int i = 0; i<5; i++)
{
for(int j = 0; j<8; j++)
{
printf("%3i", tab[i][j]);
}
putchar('\n');
}
}
int main()
{
int tab[5][8] = {0};
set2(tab, &tab[4][7]);
print3(tab);
return 0;
}
我得到了几个错误,我不能理解我做错了什么。你能帮助我吗?谢谢所有的答案。
1条答案
按热度按时间cu6pst1q1#
我认为有两个问题。
第一个是在
set2
中,需要将p < b
更改为p <= b
,因为您还想修改最后一个元素tab[4][7]
;此外,需要将&tab[0][0]
作为第一个参数发送,因为您想获得指向第一个元素的指针。其次,正如编译器所建议的,“将”tab“声明为多维数组必须对除第一维之外的所有维都有边界”。必须将
void print3(const int tab[][])
更改为void print3(const int tab[][8])
希望这能解决问题。