C语言 使用数组和指针执行任务时出现问题

bqjvbblv  于 2023-01-08  发布在  其他
关注(0)|答案(1)|浏览(124)

我有个任务:
在主代码中,声明一个二维数组[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;
}

我得到了几个错误,我不能理解我做错了什么。你能帮助我吗?谢谢所有的答案。

cu6pst1q

cu6pst1q1#

我认为有两个问题。
第一个是在set2中,需要将p < b更改为p <= b,因为您还想修改最后一个元素tab[4][7];此外,需要将&tab[0][0]作为第一个参数发送,因为您想获得指向第一个元素的指针。
其次,正如编译器所建议的,“将”tab“声明为多维数组必须对除第一维之外的所有维都有边界”。必须将void print3(const int tab[][])更改为void print3(const int tab[][8])
希望这能解决问题。

相关问题