全局变量、sizeof、数组

目录

全局变量

什么是全局变量

static关键字修饰的全局变量   ------>   叫静态全局变量

static关键字修饰的局部变量

sizeof运算

一维数组

二维数组

数组的注意


全局变量

什么是全局变量

  • 定义在函数外面   ------>   它是可以被全局访问的
  • 内存是在程序开始运行的时候就已经分配好了
  • 一旦全局变量分配出来后,内存就一直存在,直到程序退出
  • 在代码里面你只要能在编译的时候找到这个全局变量,那么都能使用它
  • 如果定义的时候没给定初值,初始值一般默认为0

static关键字修饰的全局变量   ------>   叫静态全局变量

  • 静态全局变量,静态全局变量只允许在当前的.c文件里面使用   ------>   不能再其他.c文件里使用
  • 不带static的全局变量是有办法能在其他的.c文件里面访问的得到    ------>   extern关键字
  • 我们每一个.c文件其实可以看作是一个代码模块,如果一个全局变量只在模块内部使用,那么我们一定要把修饰成static, 这样的话,就能够减少维护的成本

static关键字修饰的局部变量

  • 它也是个静态全局变量,一开始时候就分配了内存
  • 它和定义在外面的静态全局变量的唯一区别是:在函数内部定义的静态全局变量,只能在函数内部使用,其他函数看不到而已
  • 函数的调用和返回不会导致这个内存的分配和释放

sizeof运算

  • 计算变量所占的内存   ------>   sizeof(变量名),结果是字节

  • 计算类型所占的内存   ------>   sizeof(类型名),结果是字节

一维数组

  • 需要批量定义同等类型的变量

  • 类型(每个元素的类型都是一样的)    数组名字[批量的个数]

  • 内存大小   ------>   sizeof(数组名)是数组内存的大小 = sizeof(类型名)*个数

  • 数组的初始化

    // 读写,访问
    // 我们访问的时候会对数组里面的每个元素进行一个编号,编号是从0开始;
    // 10个数组的元素: 0 ~9, 6个数组的元素 0 ~5;
    // 数组名字[索引的值] // 范围,[0, 数组的个数 - 1];
    c[3] = 9;
    c[4] = 6;
    printf("%d, %d, %d, %d, %d\n", c[0], c[1], c[2], c[3], c[4]);

    // 索引我们上面是常数,我们还可以以变量作为索引;
    int index = 4;
    printf("c[%d] = %d\n", index, c[index]); // ---> 6;

     // 从0开始, < 数组大小 [0, 大小-1]
    for (int i = 0; i < 5; i++) {
        printf("c[%d] = %d\n", i, c[i]);
    }

二维数组

// 二维数组:数据类型 数组名称[行][列];
    int c_a[3][4]; // 定义了一个 3行4列的二维数组;
    int c_b[3][4] = {
    //   0    1   2  3
        {11, 12, 13, 14}, // 第0行
        {21, 22, 23, 24}, // 第1行
        {31, 32, 33, 34}, // 第2行
    };
    // 二维数组也是一段连续的内存;
    // 索引从0开始
    printf("%d\n", c_b[0][0]);
    printf("%d\n", c_b[1][1]);
    printf("%d\n", c_b[2][0]);
    // end

    // 遍历所有的行数:
    for (int i = 0; i < 3; i++) {
        // 遍历列数
        for (int j = 0; j < 4; j++) {
            printf("%d ", c_b[i][j]);
        }
        printf("\n");
    }
    // end
    // 因为内存条是一维,所以二维数组内存上也是1维德,排完一行再排一行

数组的注意

  • 数组一旦定义了,大小就再也不能改变了

  • 数组一旦定义了,元素的个数就定下来了,那么就只能访问[0,数组大小 - 1]

  • 操作时,超出数组的范围,就会越界,程序就会异常

猜你喜欢

转载自blog.csdn.net/qq_28837389/article/details/92795258
今日推荐