zoukankan      html  css  js  c++  java
  • 指针和数组的千丝万缕(一)

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

    gdb之后:

    ++b的步长实际上是3个int,也就是++b运算以后,b指向{4,5,6}这个数组的开始,而b[1]就是{7,8,9}, b[1][1]实际上就是8这个值也就是main函数中的a[2][1].

    In foo, b has type pointer to array[3] ofint, and after the increment, itpoints to the array a[1] ({4, 5, 6}).  So b[1] has type array[3] of int, and it denotes the arraya[2] ({7, 8, 9}).  In value context,b[1] “decays” into a pointer toa[2][0] (7), so b[1][1] denotesa[2][1], whose value is changed from 8 to 9.


  • 相关阅读:
    hdu 2680:Choose the best route(Dijkstra , SPFA)
    Gym
    Gym
    Gym
    常用的相似度计算
    kafka 配置
    Kafka-broker配置说明
    kafka 安装以及测试
    adaboost算法
    solr scheme配置简介
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/12007645.html
Copyright © 2011-2022 走看看