【学习笔记】【C语言】数组

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

1. 什么是数组数组,从字面上看,就是一组数据的意思,没错,数组就是用来存储一组数据的

2. 数组的特点只能存放一种类型的数据,比如int类型的数组、float类型的数组

里面存放的数据称为“元素”

3. 定义声明数组的类型

声明数组的元素个数(需要多少存储空间)

4. 格式元素类型 数组名[元素个数];

比如:int ages[3];

5. 简单使用简单初始化:int ages[5] = {19, 19, 20, 21, 25};

元素有顺序之分,每个元素都有一个唯一的下标(索引),从0开始

数组元素的访问:a[i]

6. 初始化初始化方式

int a[3] = {10, 9, 6};

int a[3] = {10,9};

int a[] = {11, 7, 6};

int a[4] = {[1]=11,[0] = 7};

常见错误

int a[];

int[4] a;

int a[b];

a = {10, 11};

a[4] = {10,9,8,5};

7. 内存分析数组存储空间的大小

存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的)

数组名的作用,查看元素地址

数组越界的注意

8. 其他使用数组与函数参数

数组元素作为函数参数

数组作为函数参数(sizeof注意)

遍历数组元素

两种方式遍历(while循环和for循环)

遍历元素值和元素地址

字符数组的使用

9.代码

1#include <stdio.h>23intmain()4{5//使用注意6//都是正确写法7//int ages[5] = {10 , 11, 12, 67, 56};8//int ages[5] = {10, 11};9//int ages[5] = {[3] = 10, [4] = 11};10//int ages[] = {10, 11, 14};1112//错误写法13//int ages[];1415//错误写法16/*只能在定义数组的同时进行初始化17int ages[5];18ages = {10, 11, 12, 14};19*/2021//正确写法22//int ages['A'-50] = {10, 11, 12, 14, 16};23//int size = sizeof(ages);24//PRintf("%d\n", size);2526//正确写法27/*28int count = 5;29int ages[count];30ages[0] = 10;31ages[1] = 11;32ages[2] = 18;33*/3435//printf();36//错误写法37//如果想再定义数组的同事进行初始化,数组元素个数必须是常量,或者不写38//int ages[count] = {10, 11, 12};394041intages[] = {10,11,12,78};4243//计算数组元素的个数44intcount =sizeof(ages)/sizeof(int);4546for(inti =0; i<count; i++)47{48printf("ages[%d]=%d\n", i, ages[i]);49}5051return0;52}5354//数组的基本使用55voidarrayUse()56{57//数组的定义格式: 类型 数组名[元素个数];58intages[5] = {19,29,28,27,26};59//19 19 28 27 26]60ages[1] =29;6162/*63ages[0] = 19;64ages[1] = 19;65ages[2] = 28;66ages[3] = 27;67ages[4] = 26;68*/6970/*71遍历:按顺序查看数组的每一个元素72*/73for(inti =0; i<5; i++)74{75printf("ages[%d]=%d\n", i, ages[i]);76}77}

数组的内存储存细节

1#include <stdio.h>23/*4提示用户输入5个学生的成绩,算出平均分并且输出5*/67intmain()8{91011//1.定义一个数组来存储成绩12intscores[5];1314//2.提示输入成绩15//用来存储总分16intsum =0;17for(inti =0; i<5; i++) {18//2.1 提示输入某个学生的成绩19printf("请输入第%d个学生的成绩:\n", i +1);20//2.2 存储当前学生的成绩21scanf("%d", &scores[i]);22//2.3 累加成绩23sum +=scores[i];24}2526//3.计算平均分,并且输出27printf("平均分是%f\n", sum/5.0);28return0;29}303132voidtest1()33{34//1.定义一个数组来存储成绩35intscores[5];3637//2.提示输入成绩38printf("请输入第1个学生的成绩:\n");39scanf("%d", &scores[0]);4041printf("请输入第2个学生的成绩:\n");42scanf("%d", &scores[1]);4344printf("请输入第3个学生的成绩:\n");45scanf("%d", &scores[2]);4647printf("请输入第4个学生的成绩:\n");48scanf("%d", &scores[3]);4950printf("请输入第5个学生的成绩:\n");51scanf("%d", &scores[4]);5253//3.计算平均分,并且输出54intsum =0;55for(inti =0; i<5; i++) {56sum +=scores[i];57}58printf("平均分是%f\n", sum/5.0);59}6061voidtest()62{63/*64char cs[5]= {'a', 'A', 'D', 'e', 'f'};6566printf("%p\n", cs);6768for (int i = 0; i<5; i++) {69printf("cs[%d]的地址是:%p\n", i, &cs[i]);70}*/7172intages[3]= {10,19,18};7374printf("%p\n", ages);7576for(inti =0; i<3; i++) {77printf("ages[%d]的地址是:%p\n", i, &ages[i]);78}79}

数组和函数

1#include <stdio.h>23//数组作为函数参数,可以省略元素个数4//数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组56voidchange(intarray[])7{8//printf("array==%p\n", array);910array[0] =100;11}1213voidchange2(intn)14{15n =100;16}1718intmain()19{20intages[6] = {10,11,10,11,10,11};2122//printf("ages==%p\n", ages);2324change(ages);2526//change2(ages[0]);2728printf("%d\n", ages[0]);29return0;30}

练习

1/*23设计一个函数,找出整型数组元素的最大值4*/56#include <stdio.h>78intmaxOfArray(intarray[],intlength)9{10//数组当做函数参数传递时,会当做指针变量来使用,指针变量在64bit编译器环境下,占据8个字节1112//int size = sizeof(array);13//printf("array=%d\n", size);1415//sizeof(array);1617//1.定义一个变量存储最大值(默认就是首元素)18intmax = array[0];1920//2.遍历所有元素,找出最大值21for(inti =1; i<length; i++)22{23//如果当前元素大于max,就用当前元素覆盖max24if(array[i] >max)25{26max =array[i];27}28}2930returnmax;31}3233intmain()34{35intages[] = {11,90,67,150,78,60,70,89,100};3637intages2[] = {11,90,67,150,78,60,70,89,100};3839//int size = sizeof(ages);4041//printf("ages=%d\n", size);42intmax = maxOfArray(ages,sizeof(ages)/sizeof(int));4344printf("%d\n", max);45return0;46}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航