第07天C语言(01):数组-内存存储细节

一、概念
/*
 变量
    变量在内存中的存储
    由于变量的内存寻址是从大到小,所以存储数据时 会从高字节开始存储
 
 数组
  注意 : 数组的存储 和 变量有点不一样, 数组存储元素, 是从所占用的低字节开始
  其实 数组名 就是 数组的地址

 */
二、代码
#include <stdio.h>
int main()
{
    // 变量在内存中的存储
    // 由于变量的内存寻址是从大到小,所以存储数据时 会从高字节开始存储
    int num = 10; // 0000 0000 0000 0000 0000 0000 0000 0000 1010
    
    // 注意 : 数组的存储 和 变量有点不一样, 数组存储元素, 是从所占用的低字节开始
    char charValues[4] = {'l','y','h','p'};
    /*
     charValues[0] = 0x7fff5fbff7e4
     charValues[1] = 0x7fff5fbff7e5
     charValues[2] = 0x7fff5fbff7e6
     charValues[3] = 0x7fff5fbff7e7
     */
    printf("charValues[0] = %p\n",&charValues[0]);
    printf("charValues[1] = %p\n",&charValues[1]);
    printf("charValues[2] = %p\n",&charValues[2]);
    printf("charValues[3] = %p\n",&charValues[3]);
    
    // &charValues == &charValues[0] == charValues
    printf("charValues = %p\n",&charValues);
    // 其实 数组名 就是 数组的地址
    printf("charValues = %p\n",charValues);

    // 0000 0000 0000 0000 0000 0000 0000 0101
    // 0000 0000 0000 0000 0000 0000 0000 1000

    int nums[2] = {5,8};
    printf("nums[0] = %p\n",&nums[0]);
    printf("nums[1] = %p\n",&nums[1]);

    return 0;
}
image.png

推荐阅读更多精彩内容