C语言-----数组

Posted 小鹿可可乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言-----数组相关的知识,希望对你有一定的参考价值。

C语言--数组

1.一维数组

1.1定义与初始化

定义:数组是包含给定类型的一组数据,并将这些数据依次存储在连续的内存空间中,每个独立的数据被称为数组元素。

  • 数组的类型由元素的类型和数量所决定。
  • 数组属性:大小,类型,(连续分配)
  • 数组的定义决定了数组名元素类型以及元素个数
  • 语法:<类型> 数组名[<元素数量(必须是>0的整数常量表达式)>]
  • 代码举例:
#define ARSIZE 10
const int arsize = 10;
enum  LEN = 10 ;
int main()

	int ar[10];//定义一个长度为10的ar整型数组
	int br[ARSIZE];//宏常量
	int cr[arsize];//常变量
	int dr[LEN];//枚举常量

  • 未初始化的数值是0。
  • 数组元素个数的计算:
int ar[10] =  1, 2, 3, 4, 5, 6, 7, 8, 7, 8 ;
int n = sizeof(ar) / sizeof(ar[0]);// 数组大小/元素大小

1.2使用

  • 数组在存储单元中是顺序连续存放的,任何一个元素都可以单独访问,用数组名和下标
  • 数组赋值给数组:
  • 其他类型数组代码展示:

	//数组  从右往左读
	int a = 10, b = 20;
	const int ar[5] =  1, 2, 3, 4, 5 ;//常性数组,元素的值只可读,不可写
	char str1[10] =  "hello" ;//10个元素,每个元素是char类型
	char str2[10] =  'h', 'e', 'l', 'l', 'o' ;
	int *par[10] =  NULL ;//10个元素,每个元素类型是int*类型
	char *pstr[10] =  NULL ;//10个元素,每个元素是char*类型
	int *pa[10] =  &a, &b ;
	return 0;

1.3应用实例

查表法:将一些事先计算好的结果,存储在常量数组中,用到时直接按下标取数据,以节省运行的计算时间,以空间换时间
代码举例:判断闰年并计算天数

  • 代码展示:
#include <stdio.h>
#include<stdlib.h>

//判断是否是闰年
bool Is_Leap(int year)


	return((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));


//查表找出每月对应的天数
int Get_YM_Day(int year, int month)

	//静态常性数组
	static const int days[] =  29, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ;
	// 下标                     0   1   2  3    4   5   6   7   8   9   10  11  12
	if (2 == month && Is_Leap(year))//如果是闰年2月
	
		month = 0;//输出0 位置的元素数值
	
	return days[month];



//计算总天数
int Get_YMD_Total(int year, int month, int day)

	int total = 0;//初始化total为0
	//判断三个区间是否满足
	if (year < 1)return -1;
	if (month<1 || month>12)return -2;
	if (day<1 || day>Get_YM_Day(year, month))return -3;
	//统计月份天数
	for (int i = 1; i < month; ++i)
	
		total += Get_YM_Day(year, i);
	
	return total + day; //返回总天数

int main()

	int year = 0; int month = 0; int day = 0;
	int sum = 0;
	bool res = false;
	scanf_s("%d%d%d", &year,&month,&day);//控制台输入年月日
	sum = Get_YMD_Total(year, month, day);//函数返回值给sum

	//输出错误显示
	/*switch (sum)
	
	case -1:printf("year error \\n");  break;
	case -2:printf("month error \\n");  break;
	case -3:printf("day error \\n");  break;

	default:printf("%d \\n", sum);
		break;*/
	if (sum > 0)
	
		printf("%d year %d month %d day =>%d sum\\n", year, month, day, sum);
	
	else
	
		printf("input error");
	
	return 0;


  • 结果展示:
  • 计算总天数中使用查表法:
//查表法
int Get_YMD_Total(int year, int month, int day)

	int total[] =  0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 ;
	int sum = 0;
	if (year < 1)return -1;
	if (month<1 || month>12)return -2;
	if (day<1 || day>Get_YM_Day(year, month))return -3;
	sum = total[month] + day;
	if (month>0 && Is_Leap(year))
	
		sum += 1;
	
	return sum;

以上是关于C语言-----数组的主要内容,如果未能解决你的问题,请参考以下文章

c语言赋值是啥?

字符数组转化字符串,C语言

C语言——指针(初阶)

c 语言用指针表示二维数组的列 怎样表示

[学习笔记]C语言中关于指针的详解1

C语言如何定义一个可变大小的数组