数组
是一组相同类型元素的集合
1.数组的创建:
2.数组初始化:
例:arr[10]={1,2,3}
不完全初始化,剩余元素默认初始化为0
int arr[5];错误,数组必须初始化
char[5]={'a','b'};
ch2[5]="ab";//注:该定义有5个元素,包括结束标志\0
sizeof:计算空间大小
strlen:求字符串长度,到\0结束
结果:4 5 随机值 4
注:strlen遇到‘\0’结束,而ch1数组中没有\0,于是strlen一直计算下去直至遇到随机\0
3.数组的存储:
一维数组在内存中时连续存放的,随下标的增长,地址由低到高
4.二维数组
int arr[3][4];
注:二维数组,初始化时行可以省略,列不可以省略 ;%p输出地址
5.数组作为函数参数
冒泡排序
void bubble_sort(int arr[],int sz)
{
int sz=sizeof(arr)/sizeof(arr[0]);//这样写sz是1,原因是arr是数组,数组传参时数组名会发生降级,降级变为首元素地址,数组传参实际上传的是数组首元素的地址,所以sizeof(arr)算的知识指针大小;可以在函数外求数组大小
int i=0;
//冒泡趟数
for(i=0;i<sz-1;i++)
{//一趟冒泡排序,两两比较
int j=0;
for(j=0;j<sz-1-i;j++)
{
if(arr[j] >arr[j+1])
{int tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
}
int main()
{
int arr[]={1,2,3,4,5,6,7};
int sz=sizeof(arr)/sizeof(arr[0]);
bubble_sort(arr, sz);
return 0;
}
特别注意:
绝大多数情况下,数组名是首元素地址;
有两个例外
sizeof(数组名)-此时数组名是整个数组,sizeof(数组名)计算的是整个数组的大小【注意:此时是数组名,而不是数组作为函数参数的数组首元素。】
&数组名 -数组名表示数组,&数组名 去除的是整个数组的地址。