今天学习了数组,由于大一时学习过数组对于一些基本的内容还留有印象,通过今天的学习更加详细的了解数组。
对于数组,其中"[ ]"要放常量不能放变量如int n等;
char arr1[] = "abc";//对于双引号的数组,即字符串的最后一位是以'\0'结尾,且[]中只能填4
char arr2[3] = {'a','b','c'};//对于大括号的数组,最后一位是没有'\0'
sizeof(arr):是计算arr数组所占空间大小(‘\0’也会被计算进去)
strlen(arr):是计算arr数组的长度的,且只能求字符串长度(‘\0’不会被计算进去)
一维数组中内存的存放是连续的;
※10进制:0-9??????? ※16进制:0-9,a,b,c,d,e,f
对于二维数组 char arr[ ][ ],其中行数是可以省略的,但是列不能省略的如 arr[ ][3];此外,二维数组的内存的地址也是连续的。
所有数组名是数组首元素的地址如 arr?? &arr[0] 但有如下两个例外;
※整个数组中有两个例外即①&arr是整个数组的地址
????????????????????????????????????????? ②sizeof(arr)是计算整个数组的大小
※数组的实参传递到形参不仅仅是数组的首元素地址传递,而且把整个数组的元素也会传递到形参之中。此处仍有疑惑,数组实参传递到形参只有首元素以及首地址,为什么数组的整元素都可以在形式参数中打印出来?
"%p"是指针(接收地址的)
冒泡排序法
#include<stdio.h>
void bubble_sort(int arr[],int sz)
{
int i=0;
int tmp=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])
{
tmp= arr[j];
arr[j]= arr[j+1];
arr[j+1]=tmp;
}
}
}
}
int main()
{
int arr[]={1,3,2,4,5,6,8,7,9,0};
int i=0;
int sz=sizeof(arr)/sizeof(arr[0]);
bubble_sort(arr,sz);
for(i=0;i<sz;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
|