C语言数组

2023-12-22 22:07:57

数组

? ? ? ? 存放的类型是一致的,多个数组元素的地址是连续的;? ? ??

? ? ? ? 最大特点:一次存入,多次使用;

一维数组的定义:

? ? ? ? 数组的类型,名称及长度;如:int a[5];

? ? ? ? 注意:定义数组的个数不是变量一定是常量!

/*现在有一个数组,存储是score[75,68,89,72,62,83,85,92]
要求:
	1.求总分,求平均分
	2.用指针遍历数组,求最大值和最小值*/

#include <stdio.h>
int main() {
	int score[8] = { 75,68,89,72,62,83,85,92 };
	int sum = 0, avg = 0, max = 0, min = 100;
	int* p;	//定义p为指针变量
	for (p = &(score[0]); p <= &(score[7]); p++) {
		sum += *p;
		if (*p > max) {
			max = *p;
		}
		if (*p < min) {
			min = *p;
		}
	}
	printf("sum=%d avg=%.2f", sum, sum / 8.0);
	printf(" max=%d min=%d", max, min);
}

一维数组的重要概念

? ? ? ? 对a[10]这个数组进行分析

? ? ? ? 1.a表示数组名,是第一个元素的地址,也是元素a[0]的地址等价于&a;

? ? ? ? 2.a是地址常量,所以只要出现a++,或a=a+2的赋值都是错误的;

? ? ? ? 3.a是一维数组名,所以它是列指针,也就是说a+1是跳一列;

二维数组:

? ? ? ? 可以缺少行,但不能缺少列!?

二维数组的重要概念

? ? ? ? 对a[3][3]二维数组进行分析

? ? ? ? 1.a表示数组名,是第一个元素的地址,也就是元素a[0][0]的地址;

? ? ? ? 2.a是地址常量,所以只要出现a++,或a=a+2赋值都是错误的;

? ? ? ? 3.a是二维数组名,所以它是行指针,也就是a+1是挑一行;

? ? ? ? 4.a[0]、a[1]、a[2]也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针a[0]+1、a[1]+1、a[2]+1都是跳一列;

? ? ? ? 5.注意a和a[0]、a[1]、a[2]是不同的,它们的基类型是不同的,前者是一行元素,后三者是一列元素;

求二维数组对角线的和

#include <stdio.h>
int main() {
	int a[3][3];
	int i, j;
	int m = 0, n = 0;
	for (i = 0; i <= 2; i++) {
		for (j = 0; j <= 2; j++)
			scanf("%d", &a[i][j]);
	}

	for (i = 0; i <= 2; i++)
	{
		m += a[i][i];
		n += a[i][2 - i];
	}
	printf("%d %d", m, n);
	return 0;
}

(重点) 表达式:

? ? ? ? ? ? ? ? 1.a[2]可变成*(a+2)

? ? ? ? ? ? ? ? 2.a[2][3]可变成*(a+2)[3],再可变成*(*(a+2)+3);????????

?

文章来源:https://blog.csdn.net/nanshenchao/article/details/135133677
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。