什么是数组:一组相同类型元素的集合。
一维数组的创建:
int arr[]; char s[]; double arr1[];
变长数组:数组中存储的元素是变量。
int n=0; scanf("%d",&n); int arr[n];
变长数组在C99之前是比支持的,在C99标准后可以使用。
初始化
1.完全初始化:把数组中的每一个元素都赋值
int arr[10]={1,2,3,4,5,6,7,8,9,10};
2.不完全初始化:赋值一部分元素,其他元素默认为0。
int arr[10]={1,2,3,4,5};二维数组
二维数组的创建方式
int arr[3][4]={0,1,2,3,4,5,6,7,8,9,10,11}; char arr[3][4]==['0','1,'2','3','4','5','6','7','8','9','10','11'} //arr[0],arr[1],arr[2] //可以理解为行数组的数组名
注意:二维数组不可以省略列数。必须要指定列数。
数组作为参数传递1.冒泡排序
数组传参传的是首元素的地址。
错误写法:
因为数组传的是首元素地址,所以在计算sz时,其实是sizeof(地址)/sizeof(第一个元素的大小)=1.
正确写法
void bubble(int*arr) { int i=0; for(i=0;iarr[j+1]) { int tmp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp; } } } } int main() { int arr[10]={0}; int i=0; for(i=0;i<10;i++) { scanf("%d",&arr[i]); } int sz=sizeof(arr)/sizeof(arr[0]); bubble(arr); for(i=0;i<10;i++) { printf("%d ",arr[i]); } return 0; }
什么是数组名:
//数组名是什么: int main() { int arr[10]={1,2,3,4,5,6,7,8,9,10}; printf("%pn",arr); printf("%pn",&arr[0]); //两种特殊的情况 //情况一 printf("%dn",sizeof(arr));//这里的arr是整个数组的名字; //情况二 printf("%pn",&arr); //&arr,这里的arr表示整个数组名,这里取出的是整个数组的地址。 printf("%p",arr+1);//跳过数组的一个元素 printf("%p",&arr+1);//跳过整个数组 printf("%p",&arr[0]+1)//跳过数组的一个元素 }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)