数组:

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

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

 

 

原文地址:http://www.cnblogs.com/shunguo/p/16817504.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性