------- android培训、.Net培训、IOS培训、碧空海的技术博客,期待与您交流!----------
第四讲 数组 字符串
A.数组定义
1.数组是由一系列类型相同的元素构成。数组声明中包括数组元素的数目和元素的类型。要访问数组中的元素,可以使用下表数字来表示单个元素。
//数组定义格式:类型 数组名[元素个数];
Int age[5];
//数组赋值:
Int age[5]= {10, 20, 45, 56, 41};
//访问数组中的元素
Int age[3](是等于56的,数组元素下标从0开始的)
2.数组的遍历和其他赋值方法
//按顺序查看数组的每一个元素
//用while、do while、for
//打印出来数组中的元素
//这种方法也可以用于数组赋值
for(int I = 0; I < 5; i++)
{
Printf(“%d %d”, i, age[i]);
}
3.计算数组大小。
利用运算符:sizeof:给出其后的对象或类型的大小(以字节为单位)。因此sizeof(age)是整个数组的大小(以字节为单位),sizeof(age[0])是一个元素的大小(以字节为单位)。就是运用整个数组的大小除以单个元素的大小就是数组中元素的个数。
For(int I = 0; I <sizeof(age)/sizeof(age[0]); i++)
4.元素在内存中的存储细节
Char cs[5] = {‘a’, ‘A’, ‘D’, e’, f’};
5.数组和函数的注意点
//数组作为函数参数,可以省略元素个数
Void change(int array[])
{
For(int I = 0; I < sizeof(array)/sizeof(array[0]);i++)
{
Printf(“array%d = %d”, i, array[i]);
}
}
6.练习:设计一个函数,找出整形数组中最大的元素
Int age[] = {11, 20, 45, 86, 74};
Int maxOfArray(int array[], int length)
{
Int size = sizeof(array);//这个不管多少元素,都占8个字节(数组当做函数参数传递时,会当做指针变量来使用的,指针变量在64bit编译环境下,占据8个字节)
//定义一个变量存储最大值(默认最大值为首元素)
Int max = array[0];
For(int I = 1; I < sizeof(array) / sizeof(array[0]);i++)
{
//如果当前元素大于max,就用当前元素来覆盖max
If(array[i] > max)
{
Max = array[i];
}
Return max;
}
}
//在主函数中
Int size = sizeof(age);//这个计算就是整个数组所占的空间20字节
Int max = maxOfArray(age, sizeof(age) /sizeof(age[0]);
Printf(“%d”, max);
7.二维数组
//使用二位数组和使用一维数组没有太大区别
定义:int age[5][10]代表的意识是:次数组有5行10列数据。第一行第一列表示为age[0][0],一次第二列数据是age[0][1]一次类推。
具体的意识是:这是个整形数组,age具有5个元素,并且每个元素都是包含10个整形数值的数组。
B.字符串运用
1.字符串是以空字符(‘\0’)结尾的char数组。字符串用双引号”jack”,并且里面包含有空字符。应该区别于字符,他是用单引号’j’,并且内部没有空字符
2.字符串在内存中的存储形式
Char name[8] = “it”; //里面存储的有I t \0(ASCII码值为0)
Char name[8] = {‘i’, ‘t’, ‘\0’};
Char name[8] = {‘i’, ‘t’, 0};
Char name[] = “itcast”; //运用sizeof计算出来具有隐藏数据,7个,少了一个\0字节数。
Printf(“%c”,name);//字符串的输出本质是把字符串的地址传递过来,并且开始读取,遇到空字符结束读取,如果在字符中没有遇到空字符,他会继续往下一直读取,直到遇到空字符。
3.strenl函数:计算字符串的长度
//计算的是字符数,并不是字数个数。计算中不包括\0字符
//计算结果是7.(呵:占据三个字符)。
//计算字符串,从开始数起,直到遇见空字符(\0)
Int size = strenl(“呵haha”);
4.练习
编写一个函数,查看字符串中是否包含c若包含返回数值1,否则返回值0
Int charContains(char str[], char c)
{
//遍历整个字符串
For(int I = 0; I < strenl(str) ; i++)
{
//如果某个参数包含参数c,则返回1
If (str[i] == c)
{
Return 1;
}
}
Return 0;
}
//while实现字符串遍历
Int charContains(char str[], char c)
{
//遍历整个字符串
Int I = 0;
//也可以这样用:while(str[++i]!= c && str[i] != ‘\0’)
While(str[i] != 0)
{
If(str[i] == c)
{
Return 1;
}
I++;
}
Return 0;
}
5.字符数组