• 数组与指针 笔记


    // 测试多维数组与指针

    # include <stdio.h>
    int main(void)
    {
     int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
     printf("a = %d, &a[0] = %d, &a[0][0] = %d, *a = %d, **a = %d
    ", a, &a[0], &a[0][0], *a, **a);
     printf("a[0] = %d, a[0][0] = %d
    ", a[0], a[0][0]);
     int b[2][2][2] = {{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}};
     printf("b = %d, &b[0] = %d, &b[0][0] = %d, &b[0][0][0] = %d
    ", b, &b[0], &b[0][0], &b[0][0][0]);
     printf("*b = %d, **b = %d, ***b = %d, b[0] = %d, b[0][0] = %d, b[0][0][0] = %d
    ", *b, **b, ***b, b[0], b[0][0], b[0][0][0]);
     
     return 0;
    } 


     
    /*
        运行结果:
         a = 6487584, &a[0] = 6487584, &a[0][0] = 6487584, *a = 6487584, **a = 1
      a[0] = 6487584, a[0][0] = 1
      b = 6487552, &b[0] = 6487552, &b[0][0] = 6487552, &b[0][0][0] = 6487552
      *b = 6487552, **b = 6487552, ***b = 1, b[0] = 6487552, b[0][0] = 6487552, b[0][0][0] = 1
      
      --------------------------------
      Process exited after 0.01666 seconds with return value 0
      请按任意键继续. . .
     结论:
         以二维数组为例
      二维数组的起始元素为 a[0][0],它的地址可以表示为&a[0], &a[0][0], a[0], a, *a
      基于以上例子,表达式 &a[0], &a[0][0], a[0], a, *a 的值都相等。
      说明:
          虽然它们的值相同,但 a 表示第 0 行的地址,而 *a 和 &a[0][0] 表示数组元素 a[0][0]
          的地址。(a)前者为行地址,(*a)后者表示列地址。
       行地址与列地址的区分:
           例如 a 位数组第一行的地址, *a 表示数组第一行第 0 列的地址 **a 表示数组第一行
        第 0 列的值(a[0][0]). 可得出结论,行地址做 * 运算后得到列地址,列地址做 * 运
        算后得到数组元素。
    */

  • 相关阅读:
    Struts2+Spring+Mybatis+Junit 测试
    struts2 action 页面跳转
    Java面试题(全)
    Java面试题
    Kubernets二进制安装(17)之安装部署Dashboard
    Kubernets二进制安装(16)之安装部署traefik(ingress)
    Kubernets二进制安装(15)之安装部署coredns
    Kubernets二进制安装(14)之flannel之SNAT规则优化
    Kubernets二进制安装(13)之部署Flannel
    Docker网络模型
  • 原文地址:https://www.cnblogs.com/lnlin/p/6633985.html
Copyright © 2020-2023  润新知