1.一维数组(一组具有相同数据类型的变量)
1.定义:数据类型 变量名【数组长度:常量】;
2.初始化:1.定义时初始化:数据类型 变量名【5】={0};
数据类型 变量名【】={1,2,2,3,4};
数据类型 变量名【5】={1,2,2};
数据类型 变量名【5】={1,2,2,3,4};
2.函数初始化:for+scanf;
3.数组元素的使用:1.访元素:array【i】;
2.访地址:array+i;&array【i】;
4.数组的存储空间:从以数组名代表的首地址为开头,分配一段连续的内存空间(由于物理结构上的设置,使得通过数组访问元素十分快捷)
2.二维数组&高维数组(数组元素是低维数组的数组)
1.二维定义:type array【i】【j】;
高维定义:type array【a1】【a2】【...】;维度高-->低;
2.初始化: 数据类型 变量名【】【3】={1,2,2,3,4};//两行三列,最后一个补充为0;
数据类型 变量名【3】【3】={1,2,2,3,4};//3*3,没初始化的都是0;
数据类型 变量名【3】【3】={{1,2},{2,3},4};//按行初始化,没初始化的都是0;
3.数组元素的访问:1.访元素:array【i】【j】;
2.访地址:*(array+i)+j;&array【i】【j】;array【i】+j;
4.数组的存储空间:依然是分配连续的空间,但是按行存放数据(存完一行之后存下一行);
3.字符数组(字符串,涉及到调用
1.字符一维数组:1.定义:char array【字符串长度+1】;//+1给出
2.初始化:1.char array【字符串长度+1】=“字符串”;
2.gets(array);//可以带空格的输入
3.scanf(“%s”,array);//遇到空格结束输入;array表示数组地址,二维数组不能直接这样表示;
3.数组处理及元素访问:1.元素访问:参见一维数组元素访问;
2.数组处理
1.strcat(array1,array2);
//将数组2连接到数组1后面
2.strcpy(array1,array2);
//将数组2复制到数组1并覆盖
3.strcmp(array1,array2);
//从左向右比较数组1和2若有不相同字符则根据ascll码分别有 :1>2:正数;1<2:负数;1=2:0(两个字符串完全相等也返回0);
4.strlen(array); //获得字符串长度;
5.puts(array);//输出;
5.printf(“%s”,array);//输出;
1.字符二维数组:1.定义:char array【字符串个数】【字符串长度+1】;//+1给出
2.初始化:1.char array【字符串个数】【字符串长度+1】;=“字符串1,字符串2,字符串3....”;
2.gets(array+i);//可以带空格的输入
3.scanf(“%s”,array+i);//遇到空格结束输入;array表示数组 地址,二位数组不能直接这样表示;
3.数组处理及元素访问:1.元素访问:参见二维数组元素访问;
数组常见错误:1.长度没有定义为常量(c中const定义为不可修改的变量,c++定义为常量)
2.越界访问
4.结构(一组具有联系的数据)
1.结构体定义:struct 结构体名{数据类型1 成员名1;
数据类型2 成员名2;
数据类型3 成员名3;}结构体数据名;
typdef struct 结构体类型名{数据类型1 成员名1;
数据类型2 成员名2;
数据类型3 成员名3;}结构体数据名;
//结构体数据类型可以嵌套
2.内容初始化:1.定义时初始化:struct 结构体类型名 结构体数据名={按结构体内数据顺序依次填入数据};//和函数初始化一样
结构体数据名={按结构体内数据顺序依次填入数据};//使用了typdef预定义
2. 成员初始化:struct 结构体类型名 结构体数据名.成员名1={};
结构体数据名.成员名1={};
3.直接赋值(复制):同类型结构体之间可以直接赋值;
3.结构体使用:结构体数据名.成员名1;//访问结构体内的成员1;
4.储存:还不是很清楚



