撸猫791 2024-06-23 15:48 采纳率: 66.7%
浏览 2
已结题

关于#c语言#的问题:奇怪的是在void outputArr(const struct student arr[], int len)中const关键词有何意义


#include<stdio.h>
struct student //结构体定义
{
    char id[16], name[16];//学号和姓名
    int score;//成绩
};
void inputArr(struct student arr[], int len); 
void outputArr(const struct student arr[], int len);
int main()
{
    int n;
    scanf("%d",&n);
    struct student students[n];
    inputArr(students,n);
    outputArr(students,n);
    return 0;
}

void inputArr(struct student arr[], int len){
    for(int i=0;i<len;i++){
        scanf("%s%s%d",&arr[i].id,&arr[i].name,&arr[i].score);
    }
    
}
void outputArr(const struct student arr[], int len){
     printf("学号 姓名 成绩\n");
    for (int i = 0; i < len; i++) {
        printf("%s %s %d\n", arr[i].id, arr[i].name, arr[i].score);
    }
}

在这代码中自定义了两个函数他们分别是分别是void inputArr(struct student arr[], int len)和void outputArr(const struct student arr[], int len)。奇怪的是在void outputArr(const struct student arr[], int len)中
const关键词有何意义?

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-06-23 15:49
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    在函数声明中,const关键字表示参数为只读,即函数内部不能修改该参数的值。在void outputArr(const struct student arr[], int len)中,参数arr[]是一个只读的结构体数组,函数内部不能修改arr[]中元素的值,只能读取值并进行输出操作。 例子: 假设我们要编写一个排序函数,函数参数为一个整型数组和数组长度,要求将数组从小到大进行排序,并返回排序后的数组。为了保证函数不改变原数组的值,可以将数组参数定义为const int arr[],表示该数组是只读的,排序函数内部只能读取数组元素值,不能修改。代码示例如下:
    #include <stdio.h>
    void sortArr(const int arr[], int len) {
        // 冒泡排序
        for (int i = 0; i < len - 1; i++) {
            for (int j = 0; j < len - i - 1; j++) {
                if (arr[j] > arr[j+1]) {
                    int tmp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                }
            }
        }
    }
    int main() {
        int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
        int len = sizeof(arr) / sizeof(arr[0]);
        printf("Original array:\n");
        for (int i = 0; i < len; i++) {
            printf("%d ", arr[i]);
        }
        printf("\n");
        sortArr(arr, len);
        printf("Sorted array:\n");
        for (int i = 0; i < len; i++) {
            printf("%d ", arr[i]);
        }
        printf("\n");
        return 0;
    }
    

    以上代码中,sortArr函数的参数为const int arr[],表示该数组是只读的,不能在函数内部修改其元素的值。在函数内部进行排序操作时,只能通过读取数组元素值来进行比较和交换操作。在main函数中,先输出原始数组的值,再调用sortArr函数对数组进行排序,最后输出排序后的数组值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月1日
  • 已采纳回答 6月23日
  • 创建了问题 6月23日

悬赏问题

  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 有人知道怎么在R语言里下载Git上的miceco这个包吗
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥20 关于DAC输出1.000V对分辨率和精度的要求
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?