开原网站制作公司,重庆网站推广网络推广,中山软件开发,百度直播平台0,问题的引入 怎么保存一个学生的成绩 float a; 怎么保存一个班#xff08;10人#xff09;的学生的成绩 float a,b,c,d......; float a1,a2,a3,........; 这样太麻烦了 -》“数组” 1#xff0c;数组 什么是数组#xff…0,问题的引入 怎么保存一个学生的成绩 float a; 怎么保存一个班10人的学生的成绩 float a,b,c,d......; float a1,a2,a3,........; 这样太麻烦了 -》“数组” 1数组 什么是数组 一组具有相同的数量类型的有序集合 “集合” “有序的集合” “相同的数据类型” 一维数组二维数组多维数组 2一维数组 2.1数组的定义格式 类型说明符 数组名 [整型的表达式或者常量]; 类型说明符 指的是数组的类型吗不对 是指的数组中元素的类型 任意的合法的c语言的数据类型都可以。 基本类型int float char .... 构造类型:结构体共用体。。。。 指针类型 数组名数组的名字要符合c语言标识符的规定 整型表达式用来指定数组元素的个数指定该数组中有多少个元素 一般在定义时是一个常量表达式或者常量整型。随着编译器的升级有很多编译器也支持变量的写法 例子 int a[10]; 定义了一个数组名字叫做a里面有10个元素并且每个元素的类型是int并不是数组的类型是Int flaot b[10]; 定义了一个数组名字叫做b里面有10个元素并且每个元素的类型是float并不是数组的类型是float a到底是什么类型呢 数组类型 a是一个含有10个int型数据元素的数组。 typeof(a) - int [10] //typeof是求对象的类型 //typeof怎么使用?????????? b到底是什么类型呢 数组类型 b是一个含有10个float型数据元素的数组。 typeof(b) - float [10] //typeof是求对象的类型 2.2一维数组在内存中的存放 数组在内存中是在连续的地址空间中存入并且从低地址到高地址依次存放 int a[10]; 依次存入a[0],a[1],a[2]........a[9] 2.3 一维数元素的引用 数组名[下标] -》代表数组中的某个元素 “下标”整数c语言中数组的下标是从0开始的 0,1,2,3,,,,,n-1 (n代表数组元素的个数) a[0] - 数组中第一个元素 a[1] - 数组中第er个元素 ...... a[n-1] -数组中最后一个元素 引用数组元素a[i]时和引用普通变量一样有左值有右值 int a[10]; a[4] 1000; //把1000存到数组元素a[4]对应的地址中去 左值 int m; m a[4]; //把a[4]对应地址中的值赋值给m 右值 printf(%d\n,a[4]);//把a[4]对应地址中的值取出来并打印 右值 2.4 一维数组的初始化 初始化在定义的时候就给他赋值 数组的初始化用{} int b[5];//没有初始化元素的值是不确定的 (1)全部元素都初始化 int a[5] {1,2,3,4,5}; a[0] - 1 a[1] - 2 ,.... a[4] - 5 (2)给部分元素初始化 int b[10] {1,2}; 给前面的元素初始化后面的元素没有初始化就默认为0 注意如果对全部元素都初始化可以不指定数组元素的个数。 int c[] {1,2,3,4,5,6,7}; 为什么因为编译器可以猜出来数组元素的个数。 3字符数组 字符数组本质还是一个数组也需要遵循数组的一些操作规则 又有一些特殊的地方所有单独讲讲 char c[5] {a,b,c,d,e};
char c[5] {a,b,c,d,e};//后面的都默认为0对应的是空字符\0
char c[6] abcde;//用双引号引起来的是字符串//相当于把a赋值给c[0],字符b赋值给c[1]........把空字符赋值给c[5] 字符串后面都会默认有一个空字符用字符串这种形式给字符数组赋值也会把空字符进行赋值 strlen -》求字符串或字符数组的长度元素的个数不包括\0 char c[6] abcde; strlen(c) -5 sizeof(c) - 6char c[10] {a,b,c,d,e}; strlen(c) -5 sizeof(c) - 10char c[5] abcde; strlen(c) -不确定的值 sizeof(c) - 5 strlen求字符长度的时候实现原理先找第一个字符判断是否为\0,如果不是长度加一再判断下个直到遇到\0为止那么\0前面的字符个数就是strlen的结果。