zoukankan      html  css  js  c++  java
  • 多维数组问题 int (*a)[] int []

    今天做调整方阵这道题: 第一遍提交没有通过, 又gdb 重新温故了

    交换二维数组中的两行数据:

    void swap(int *a, int *b)                                                                                                                                                                      
    {                                                                                                                                                                                              
        int t = *a;                                                                                                                                                                                
        *a = *b;                                                                                                                                                                                   
        *b = t;                                                                                                                                                                                    
    }                                                                                                                                                                                              
     
    //这里必须加上[10], 不加的话,本机测试是可以通过的,但是OJ提交会报这个错误, 编译不会通过 void swap_first(int (*a)[10], int (*b)[10], int n) { for (int i = 0; i < n; i++) swap( &(*a)[i], &(*b)[i] ); }

    调用:
    swap_first(a+0, a+1, n);

    这里需要注意 二维数组中的第一位的数据类型:

    #include <stdio.h>                                                                                                                                                                             
                                                                                                                                                                                                   
    int main(void)                                                                                                                                                                                 
    {                                                                                                                                                                                              
        int a[10][10] = {{1, 2, 3, 4}, {5, 6, 7, 8}};                                                                                                                                              
        int b[10] = {0};                                                                                                                                                                           
        return 0;                                                                                                                                                                                  
    } 
    
    gdb --> start --> n ... > 
    ptype(a) -- > int [10][10]
    ptype(a+0) --> int (*)[10]
    ptype( *(a+0)+1 ) --> int *
    p *( *(a+0)+1 ) --> 2
    ptype(b) ---> int [10]
    

    注意二维数组中操纵其中第一维是的方法,int (*)[10]

    是指向数组的指针, 和他的纬度10。

    以及去它中元素地址的方式: & (*a)[i]

  • 相关阅读:
    android-6
    android-5
    android-购物商城
    安卓简易计算器
    安卓第四周作业
    安卓第一周作业
    第十五周作业
    第十三周作业
    第十三周上机练习
    第三次安卓作业
  • 原文地址:https://www.cnblogs.com/sanghai/p/6183218.html
Copyright © 2011-2022 走看看