11.9 二维数组定义时大括号里必须还要有大括号、形参不能改变实参,但是数组可以

发布于 12 天前  17 次阅读


#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main() {
	int in[3][5] = {0};
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 5; j++) {
			scanf("%d", &in[i][j]);
		}
	}
	int min;
	for (int i = 1; i < 3; i++) {
		min = in[0][3];
		if (min > in[i][3]) {
			min = in[i][3];
		}
	}
	printf("%d", min);
	return 0;
}

看作挺对,但会出现编译警告

_.c: In function 'main':
_.c:5:2: warning: missing braces around initializer [-Wmissing-braces]
int in[3][5] = { 0 };
^
_.c:5:2: warning: (near initialization for 'in[0]') [-Wmissing-braces]

应该是int in[3][5]={ {0} }

这是最简单的初始化,因为我们知道编译器在这里很人性化

//当然,你可以图省事不初始化,哈哈


#include <stdio.h>

// 冒泡排序函数,从大到小排序
void bubbleSort(int arr[]) {
    int i, j, temp;

    // 冒泡排序算法
    for (i = 0; arr[i] != -1; i++) { // 以 -1 作为结束标志
        for (j = 0; arr[j] != -1 && arr[j + 1] != -1; j++) {
            if (arr[j] < arr[j + 1]) { // 从大到小排序
                // 交换 arr[j] 和 arr[j + 1]
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

int main() {
    // 示例数组,最后一个元素为 -1 作为结束标志
    int arr[] = {5, 3, 8, 6, 2, -1}; // -1 作为结束标志

    // 调用冒泡排序函数
    bubbleSort(arr);

    // 输出排序后的数组
    printf("排序后的数组: ");
    for (int i = 0; arr[i] != -1; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

// 调用冒泡排序函数
bubbleSort(arr);
这一步,会改变main函数里面的arr的数据

数组名在表达式中会被转换为指向数组首元素的指针,所以它可以看作一个bug,它转换成了指针!

届ける言葉を今は育ててる
最后更新于 2024-11-09