——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
int main()
{
//数组名 代表地址
//数组的定义格式: 类型 数组名【元素个数】; 如果要在定义数组的同时进行初始化,数组元素个数 只能是常量 或者不写
// 数组的特点
只能存放一种类型的数据,比如int类型的数组、float类型的数组
里面存放的数据称为"元素"
// int ages[5];
//int ages[5] = {//int ages[] = {19,19,22,27,26};}; 或者 int ages[] = {19,19,22,27,26};
// 元素:19 19 22 27 26
// int ages = [[3]=22, [5]=26];
/* 元素有顺序之分,每个元素都有一个唯一的下标(索引),从0开始
数组元素的访问:a[i]
如:
ages[0] = 19;
ages[1] = 19;
ages[2] = 22;
ages[3] = 27;
ages[4] = 26;
数组存储空间的划分:内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的
数组名的作用:查看元素地址
数组作为函数参数
// 数组作为函数参数,可以省略元素个数
// 数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组
*/
// 遍历:按顺序查看数组的每一个元素(while循环和for循环)
int ages[] = {1, 2, 88, };// 为了使元素个数可以更改方便
int count = sizeof(ages)/sizeof(int);// 定义变量count 存储元素个数
for (int i = 0; i < count; i++)// 遍历整个数组
{
printf("ages[%d]=%d\n",i ,ages[i]);// 打印整个数组元素
}
return 0;
}
数组的简单练习
int main()//数组名 就代表地址 首元素地址即元素组地址
{
char cs[5]= {'a','c','d','f','b'};// 定义一数组
printf("%p\n",cs);
for (int i = 0; i<5; i++)
{
printf("cs[%d]的地址是%p\n",i,&cs[i]);
}
return 0;
}
//二维数组
二维数组是一个特殊的一维数组:它的元素是一维数组。例如int a[2][3]可以看作由一维数组a[0]和一维数组a[1]组成,
这两个一维数组都包含了3个int类型的元素
数组与函数
// 设计一个函数,找出整形数组元素的最大值
int maxOfArray(int array[],int length)
{
//定义一个变量存储最大值(默认就是首元素)
int max = array[0];
//遍历整个数组 找出最大值
for (int i = 1; i<length; i++)
{
//如果当前元素大于Max,就用当前元素覆盖max
if (array[i]>max)
{
max = array[i];
}
}
return max;
}
int main()
{
int ages[] = {11,12,34,56,78,90};
int max = maxOfArray(ages, sizeof(ages)/sizeof(int));
printf("%d\n",max);
return 0;
}
字符串数组
1.使用场合
* 一维字符数组中存放一个字符串,比如一个名字char name[20] = “mj”
* 如果要存储多个字符串,比如一个班所有学生的名字,则需要二维字符数组,char names[15][20]可以存放15个学生的姓名(假设姓名不超过20字符)
* 如果要存储两个班的学生姓名,那么可以用三维字符数组char names[2][15][20]
2.初始化
char names[2][10] = { {‘J’,’a’,’y’,’\0’}, {‘J’,’i’,’m’,’\0’} };
char names2[2][10] = { {“Jay”}, {“Jim”} };
char names3[2][10] = { “Jay”, “Jim” };
练习
// 打印字符串数组中的某个字符
#include <stdio.h>
#include <string.h>
int char_contains(char str[], char c);// 声明
int main()
{
char name[] = "itcast";// 定义一个字符串
int result = char_contains(name, 't');
printf("%d\n",result);
}
int char_contains(char str[], char c)
{
for (int i = 0;i<strlen(str);i++)// 遍历整个字符串
{
if (str[i] == c)
{
return 1;
}
}
return 0;
}