数组:把具有相同类型的若干变量按有序的顺序组织起来,这些按序排列的同类数据元素的集合成为数组
数组定义:类型 数组名【数组长度】;
int b[5]; //c程序会在内存中连续划分出5个大小为4字节的存储空间,并把第一个内存单元的地址作为整个数组的地址。数组元素为b[0],b[1],b[2],b[3],b[4]。可以认为数组名b就是指向该数组第一个元素的指针。
字符:‘一个字符’, ‘a’
字符串: “字符序列” “assdcaxz”
转义字符: ‘\n’ : 换行. \0 空字符(NUL)
int b; //b是一个随机值
int a=10; //假设10在一个格子里
int arr [10]; // 定义一个10个长度的int数组,值随机不为0。10个格子。
int brr[3]={1,2,3}; //初始化:定义变量的同时赋值
int crr [10]={1,2,3,4,5} //初始化一部分,则剩余部分为0;若为字符串数组,剩余部分仅为一个\0; 在C语言中,字符串总是以’\0’作为结尾,所以’\0’也被称为字符串结束标志,或者字符串结束符。
int drr[]={1,2,3,4,5,6} //自动推导长度
定义与使用
定义的时候一定有数据类型,使用的时候前面没有数据类型。
定义的时候[ ]里面是长度,使用的时候[ ]里为下标。
数组长度公式:sizeof(数组名)/sizeof(数组名[0]) 使用时注意数组名不能是形参,数字当形参时退化为一个指针。
这是求一个数组内含多少个成员
sizeof(arr)是求arr这个数组有多少字节的
sizeof(arr[0])则是求下标为0的那个成员有多少字节
折半查找
时间复杂度 1 2 4 8 16 32 …… n。 2的x次方是n,所以x=log2n。次数是x。
数组不可以整体赋值,可以整体复制到另外一个数组.
二维数组定义:数据类型 名字 [行][列] 第一个括号里存放这个二维数组中有多少个一维数组, 第二个括号存放每一个一维数组的大小
int arr[3][4] 三行四列 其中包含三个一维数组,数组名分别为c[0],c[1],c[2]。
int arr[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int arr[3][4]={1,2,3,4,5,6,7,8,9,10,11,12} ; //这两个等价
int arr[3][4]={1,2,3,4 }; //其余为0
二维数组名是指向整个二维数组首地址的指针。