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

C语言是否支持Python式数组反向索引?逆向打印数组有无捷径?

C语言数组逆序打印的实现方法

首先明确:C语言没有Python那种简洁的切片语法(你提到的a[-1:]其实是取数组最后一个元素的子数组,Python里真正实现全数组逆序的是a[::-1]),没法一行代码直接实现逆序打印,必须手动编写逻辑,但实现起来很简单,有几种常用方式:

  • 直接倒序遍历数组(最常用、高效的方式)
    不需要修改原数组,直接从最后一个元素开始遍历到第一个,逐个打印。示例代码:

    #include <stdio.h>
    
    int main() {
        int arr[] = {10, 20, 30, 40, 50};
        // 计算数组长度:总字节数除以单个元素字节数
        int arr_len = sizeof(arr) / sizeof(arr[0]);
    
        // 从最后一个索引(arr_len-1)遍历到0
        for (int i = arr_len - 1; i >= 0; i--) {
            printf("%d ", arr[i]);
        }
        // 输出结果:50 40 30 20 10
        return 0;
    }
    

    如果是字符串数组,用strlen()获取长度即可,逻辑完全一致。

  • 先反转数组再打印(适合需要复用逆序数组的场景)
    如果之后还需要用到逆序后的数组,可以先把数组元素反转,再正常顺序打印。示例代码:

    #include <stdio.h>
    
    void reverse_array(int *arr, int len) {
        for (int i = 0; i < len / 2; i++) {
            // 交换首尾对应位置的元素
            int temp = arr[i];
            arr[i] = arr[len - 1 - i];
            arr[len - 1 - i] = temp;
        }
    }
    
    int main() {
        int arr[] = {1, 3, 5, 7, 9};
        int arr_len = sizeof(arr) / sizeof(arr[0]);
    
        reverse_array(arr, arr_len);
        // 正常顺序打印逆序后的数组
        for (int i = 0; i < arr_len; i++) {
            printf("%d ", arr[i]);
        }
        return 0;
    }
    

总结:C语言没有Python那样的语法糖直接实现逆序打印,但手动编写逻辑非常简单,优先推荐直接倒序遍历的方式(不需要修改原数组,性能更优)。

内容的提问来源于stack exchange,提问作者B Kazimy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:07:37