• C语言学习数组


    数组:

    相同数据类型的连续存储集合

    int arr[10] = {1,2,3,4,5}

    #include<stdio.h>
    
    #define PI 3.14   //预处理定义常量 PI
    
    int main(void)
    {
        int arr[10] = {0,1,2,3,4,5,6,7,8,9};
    
        printf("arr[0] = %x \n", &arr[0]); // 内存地址用16进制表示所以用%x
        printf("arr[1] = %p \n", &arr[1]);// %p 专门打印内存地址(内存地址的格式化输出), 只不过这种方式高位会补0
        printf("arr[2] = %p \n", &arr[2]);
        printf("arr[3] = %x \n", &arr[3]);
    
    
    
        return 0;
    
    }

    arr[0] = 61fdf0
    arr[1] = 000000000061FDF4
    arr[2] = 000000000061FDF8
    arr[3] = 61fdfc

    说明数组里面各个元素的内存地址是连续的

    #include<stdio.h>
    
    #define PI 3.14   //预处理定义常量 PI
    
    int main(void)
    {
        int arr[10] = {0,1,2,3,4,5,6,7,8,9};
    
        printf("arr[0] = %x \n", &arr[0]); // 内存地址用16进制表示所以用%x, 取数组第一个元素的地址
        printf("arr is %x",arr); //取数组的地址
    
    
        return 0;
    
    }
    
    arr[0] = 61fdf0
    arr is 61fdf0
    数组名的地址, 就是数组第一个元素的地址
    #include<stdio.h>
    
    #define PI 3.14   //预处理定义常量 PI
    
    int main(void)
    {
        int arr[10] = {0,1,2,3,4,5,6,7,8,9};
    
    
        printf("the size of arr is %u\n",sizeof(arr));// sizeof 返回的是unsigned int 类型数据, 所以格式化输出用%u
        printf("the size of arr[0] is %u", sizeof(arr[0]));
    
    
        return 0;
    
    }
    
    
    the size of arr is 40
    the size of arr[0] is 4
    #include<stdio.h>
    
    #define PI 3.14   //预处理定义常量 PI
    
    int main(void)
    {
        int arr[10] = {0,1,2,3,4,5,6,7,8,9};
    
    
        printf("the size of arr is %u\n",sizeof(arr));// sizeof 返回的是unsigned int 类型数据, 所以格式化输出用%u
        printf("the size of arr[0] is %u\n", sizeof(arr[0]));
        printf("数组个数是%d ", sizeof(arr)/sizeof(arr[0])); // 用数据大小除以每个元素的大小
    
    
        return 0;
    
    }
    
    
    the size of arr is 40
    the size of arr[0] is 4
    数组个数是10

    数组的初始化

    剩余未初始化的值赋0值

     练习; 逆序一个数组

    #include<stdio.h>
    
    #define PI 3.14   //预处理定义常量 PI
    
    //练习 : 将数组{2,7,1,9,4,3,90,25} 逆序输出, 即{25,90,3,4,9,1,7,2}
    int main(void)
    {
        int arr[] = {2,7,1,9,4,3,90,25};
    
        //打印逆序之前的数组
        printf("逆序之前的数组是\n");
        for (int i = 0; i < sizeof(arr)/sizeof(arr[0]) ; i++){
            printf("%d , ",arr[i]);
        }
        printf("\n");
    
        //进行逆序,基本思路就是第一个和最后一个交换位置, 第二个和倒数第二个交换位置, 定义前面index 变量为s, 定义后面的index 变量名字是 e
        int s = 0;
        int e = sizeof(arr) / sizeof(arr[0]) - 1;
        int temp;
    
        while (s < e){
    
            //三杯水法, 用一个中间临时变量来存储另外一个待交换的值
            temp = arr[s];
            arr[s] = arr[e];
            arr[e] = temp;
            s++;
            e--;
    
        }
    
    
         //打印逆序之前的数组
        printf("逆序之后的数组是\n");
        for (int k = 0; k < sizeof(arr)/sizeof(arr[0]) ; k++){
            printf("%d,",arr[k]);
        }
    
    
        return 0;
    
    }


    逆序之前的数组是
    2 , 7 , 1 , 9 , 4 , 3 , 90 , 25 ,
    逆序之后的数组是
    25,90,3,4,9,1,7,2,

     
    #include<stdio.h>
    
    #define PI 3.14   //预处理定义常量 PI
    
    //练习 : 将数组{2,7,1,9,4,3,90,25} 逆序输出, 即{25,90,3,4,9,1,7,2}
    int main(void)
    {
        // 多维数组
    
        int arr[4][4] = {{1,2,3,4},{11,22,33,44},{111,222,333,444},{123,456,789,101}};
    
        printf("整个数组的内存大小是,sizeof(arr) %u \n", sizeof(arr));
        printf("行的个数是, %d \n", sizeof(arr)/ sizeof(arr[0]));
        printf("一个元素的占用内存大小是 sizeof(arr[0][0], %u \n", sizeof(arr[0][0]));
        printf("一行所占用的内存大小是sizeof(arr[0]) %u\n", sizeof(arr[0]));
        printf("列的个数是 %d \n", sizeof(arr[0])/sizeof(arr[0][0]));
        printf("数组的元素个数是 %d\n",sizeof(arr)/ sizeof(arr[0][0]));
    
        printf("输出多维数组的每个元素\n");
    
        for ( int i = 0; i < sizeof(arr)/ sizeof(arr[0]) ; i++)
        {
            printf("这是第%d 行\n", i);
            for (int j = 0; j < sizeof(arr[0])/ sizeof(arr[0][0]) ; j++)
            {
    
                printf("%d\n", arr[i][j]);
            }
        }
    
    
        return 0;
    
    }



    行的个数是, 4
    一个元素的占用内存大小是 sizeof(arr[0][0], 4
    一行所占用的内存大小是sizeof(arr[0]) 16
    列的个数是 4
    数组的元素个数是 16
    输出多维数组的每个元素
    这是第0 行
    1
    2
    3
    4
    这是第1 行
    11
    22
    33
    44
    这是第2 行
    111
    222
    333
    444
    这是第3 行
    123
    456
    789
    101

     

     数组的首地址 == 数组的首元素地址 == 数组的首行地址

    二维数组的初始化

    int arr[4][4] = {{1,2,3,4},{11,22,33,44},{111,222,333,444},{123,456,789,101}};
    int arr[][] = {{1,2,3,4},{11,22,33,44},{111,222,333,444},{123,456,789,101}};#这种方式是不行的
    int arr[4][4] = {{1,2,3,},{11,22,33,},{111,222,333,444}};  未被初始化的数组为0
    int arr[3][5] = {1,2,3,4,5} 系统自动分配行列
    int arr[][4] = {1,3,4,5,6,7} 二维数组必须指定列数
     
  • 相关阅读:
    JavaScript Array 对象(length)方法 (contact、push,pop,join,map、reverse、slice、sort)
    echarts+thinkphp 学习写的第一个程序
    jQuery DOM 元素方法(get)
    jQuery 遍历 (each、map)
    jQuery 文档操作方法(append)
    echarts之series,markLine、markPoint
    echarts, 小知识点随意记录,
    ehcarts之toolbox,工具栏
    路径 php中'.'和'..'还有'./'和'../'
    ThinkPHP CodeIgniter URL访问举例
  • 原文地址:https://www.cnblogs.com/shunguo/p/16817504.html
Copyright © 2020-2023  润新知