C语言讲义——数组

数组是:

  • 一组数据
  • 一组类型相同的数据
  • 在计算机底层,数组是一块连续的内存

为什么使用数组?

一年12个月
int m1=1, m2=2, m3=3, ... 麻烦

数组示例:

#include <stdio.h>
int main(int argc, char *argv[]) {
	// 数组赋值
	int month[] = {1,2,3,4,5,6,7,8,9,10,11,12};

	// 求数组长度
	int len = sizeof(month)/sizeof(int);

	// 访问数组元素
	int i =0;
	for(i =0; i<len; i++) {
		printf("%d月_", month[i]);
	}
	return 0;
}

注意数组不要越界

数组越界,C语言不管!
比如下例中,变量_test会被循环破坏!

#include <stdio.h>
int main(int argc, char *argv[]) {
	char arr[3];
	int _test = 1;

	printf("循环前:_test = %d\n", _test);
	int i = 1;
	for(i = 0 ; i<10; i++) {
		arr[i] = 9;
	}
	printf("循环后:_test = %d\n", _test);

	return 0;
}

循环后的结果并不是确定的:

循环前:_test = 1
循环后:_test = 2313

使用函数输出数组

C语言中,函数内无法获取数组长度,需要把数组的长度通过参数传入。

#include <stdio.h>

//返回值:void
//数组作参数:int arr[]
//声明简化:int[]
//需要传数组元素的个数
void printArray(int[],int);

int main(int argc, char *argv[]) {
	int a[5]= {1,3,5,7,9};
	// 先求数组元素的个数
	int nLen = sizeof(a)/sizeof(int) ;
	printArray(a, nLen);

	return 0;
}

void printArray(int arr[],int len) {
	int i=0;
	for(i = 0; i<len; i++) {
		printf("%d ", arr[i]);
	}
	printf("\n");
}

数组的赋值

*注意:纯C语言中,[变量/const常量]不能用于定义数组长度,C++中可以。本例使用宏定义来表示数组长度。

#include <stdio.h>
#define ARR_LEN 5
void printArray(int[],int);

int main(int argc, char *argv[]) {
	// 分别赋值
	int a[]= {1,3,5,7,9};
	printArray(a, ARR_LEN);

	// 统一赋值
	int b[ARR_LEN]= {0};
	printArray(b, ARR_LEN);

	// 循环赋值
	int c[ARR_LEN];
	int i = 0;
	for(i; i<ARR_LEN; i++ ) {
		c[i]=i*10;
	}
	printArray(c, ARR_LEN);

	return 0;
}

void printArray(int arr[],int len) {
	int i=0;
	for(i = 0; i<len; i++) {
		printf("%d ", arr[i]);
	}
	printf("\n");
}
posted @ 2019-07-15 21:06  虎老狮  阅读(264)  评论(0编辑  收藏  举报