数组

来源:互联网 发布:杭州java培训机构 编辑:程序博客网 时间:2024/05/20 01:37

数组:

     是用来存储一组数据的容器.

  1. //初始化方式
  2. #include<stdio.h>
  3. int main(){
  4.    //初始化:类型  数组名[长度]:{元素1,元素2,...};
  5.    int arr[3]={70,80,90};
  6.    //初始化二:单独初始化
  7.    int arr2[3];
  8.    arr2[0]=1;
  9.    arr2[1]=2;
  10.    arr2[2]=3;
  11.    //初始化3:省略长度
  12.    int arr3[]={70,80,90};
  13.    return 0;
  14. }

特点:

      1.数组必须要定义长度(正整数),定义时可初始化(长度必须是常量)或之后单独初始化.

      2.数组是有序的,每个数组都有角标,从0开始分配,角标不能>=数组长度.类型一致.

      3.数组有地址(数组名),里面的元素也有地址.数组当参数时(长度可省)传递的是地址.

  1. #include<stdio.h>
  2. int arrMy(int arr[]){
  3.    return sizeof(arr);
  4. }
  5. int main(){
  6.    int arr[]={1,2,3};
  7.    int num=arrMy(arr);
  8.    printf("%d---%lu\n",num,sizeof(arr));    //运行结果是:8---12
  9.    
  10.    return 0;
  11. }
      4.数组当参数传递时是指针类型,所以如果需要用数组长度要额外传递.

数组第一个元素的地址就是这个数组的地址.二者是一致的.

  1. #include<stdio.h>
  2. int arrMy(int arr[]){
  3.    arr[0]=10;
  4.    return sizeof(arr);
  5. }
  6. int main(){
  7.    int arr[]={1,2,3};
  8.    printf("%d\n",arr[0]);    //运行结果:1
  9.    int num=arrMy(arr);
  10.    printf("%d\n",arr[0]);    //运行结果是:10
  11.    return 0;
  12. }


二维数组:

       管理一组有关联的数组

特点:

      1.与数组基本一致,但传递子数组时传递的是地址

  1. #include<stdio.h>
  2. int main(){
  3.    int arr[2][3]={{1,2,3},{1,2,3}};
  4.    printf("%d\n",arr[0][1]);     //运行结果:2
  5.    printf("%p\n",arr[1]);        //运行结果:0x7fff5fbff7ec
  6.    return 0;
  7. }

      2.子数组数量控制行数,单个子数组长度控制列数

  1. #include<stdio.h>
  2. int main(){
  3.    int arr[2][3]={{1,2,3},{1,2,3}};
  4.    //遍历数组
  5.    for (int i=0; i<2; i++) {
  6.        for (int j=0; j<3; j++) {
  7.            printf("%d\t",arr[i][j]);
  8.        }
  9.        printf("\n");
  10.    }
  11.    return 0;
  12. }

      3.每个子数组类型及长度一致

选择排序:

  1. //选择排序
  2. #include<stdio.h>
  3. int main(){
  4.    int arr[6]={1,2,4,3,8,5};
  5.    int tempIndexMax=0;
  6.    for (int i=0; i<6-1; i++) {
  7.         tempIndexMax=i;
  8.        for (int j=i+1; j<6; j++) {
  9.          
  10.            if (arr[tempIndexMax]<arr[j]) {
  11.                tempIndexMax=j;
  12.            }
  13.        }
  14.        printf("%d\n",tempIndexMax);
  15.        int temp=arr[i];
  16.        arr[i]=arr[tempIndexMax];
  17.        arr[tempIndexMax]=temp;
  18.        for (int i=0; i<6; i++) {
  19.            printf("%d\t",arr[i]);
  20.        }
  21.        printf("\n");
  22.    }
  23.    return 0;
  24. }
  25. /*运行结果
  26. 4
  27. 824315
  28. 5
  29. 854312
  30. 2
  31. 854312
  32. 3
  33. 854312
  34. 5
  35. 854321
  36. Program ended with exit code: 0
  37. */

冒泡排序

  1. #import <Foundation/Foundation.h>
  2. int main(int argc, const char * argv[]) {
  3.    @autoreleasepool {
  4.        int a[]={1,2,4,3,8,5};
  5.        int n=(sizeof(a))/(sizeof(int));
  6.        int t=0;
  7.        for (int i=0; i<n-1; i++) {
  8.            for (int j=0; j<n-1-i; j++) {
  9.                if (a[j]<a[j+1]) {
  10.                    t=a[j];
  11.                    a[j]=a[j+1];
  12.                    a[j+1]=t;
  13.                }
  14.            }
  15.        }
  16.        for (int k=0; k<n; k++) {
  17.            printf("%d\t",a[k]);
  18.        }
  19.    }
  20.    return 0;
  21. }

0 0
原创粉丝点击