You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言是否支持不遍历元素直接打印完整数组(含二维数组行)

C语言打印数组问题解答

现有代码错误原因

你代码中的Numbers[i]是二维数组对应行的首地址,属于int*指针类型,使用%i格式符输出时只会打印该内存地址的十进制整数值,和数组存储的元素值无关,因此会得到你看到的异常负数输出。

核心需求实现说明

C标准库没有内置无需遍历就直接打印完整数组的函数,所有打印数组内容的实现底层本质都需要遍历每个元素,但你可以通过封装打印函数的方式简化上层调用逻辑,不需要每次使用时手动写遍历代码。

可行实现示例

针对你需要的输出格式,可以封装如下打印函数:

#include <stdio.h>

// 打印int类型一维数组的封装函数
void print_int_arr(int *arr, int len) {
    printf("{");
    for (int i = 0; i < len; i++) {
        if (i > 0) printf(", ");
        printf("%d", arr[i]);
    }
    printf("}\n");
}

int main() {
    int Numbers[4][4] = {{5, 1, 1, 6},
                        {2, 2},
                        {3, 3, 3},
                        {4, 4, 4}};
    // 上层调用仅需要一行,无需重复写遍历逻辑
    print_int_arr(Numbers[0], 4);
    print_int_arr(Numbers[1], 2);
    print_int_arr(Numbers[2], 3);
    print_int_arr(Numbers[3], 3);
    
    return 0;
}

上述代码运行后即可输出你期望的结果:

{5, 1, 1, 6}
{2, 2}
{3, 3, 3}
{4, 4, 4}

如果是元素长度统一的数组,还可以进一步简化上层调用,比如全是4元素的数组可以直接在循环里调用:

for (int i = 0; i < 4; i++) {
    print_int_arr(Numbers[i], 4);
}

(注意该写法会把初始化时未赋值的元素打印为默认的0值)

内容的提问来源于stack exchange,提问作者Mahmoud Gabr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 16:36:05