zoukankan      html  css  js  c++  java
  • 利用数组传参时sizeof出现的问题

    今天周末有点无聊,我想着随便写几个代码玩玩。

    可突然发现一个问题,本人之前C++的代码写的很少,遇到这个问题,各位看客如果谁知道原因,请不吝赐教。

    #include<iostream>
    using namespace std;
    
    template<class T>
    bool checkArray(T a[]){
        int i;
        cout<<sizeof(a)/sizeof(a[0])<<endl; //测试 这里输出结果 为 1
        for(i=0;i<sizeof(a)/sizeof(a[0]);i++){
            if(a[i] > a[i+1]){
                cout<<"false"<<endl;
                return false;
            }
        }
        
        cout<<"true"<<endl;
        return true;
    }
    
    int main(void){
        int x[] = {1,3,3,5,3,233};
        checkArray(x);
        cout<<sizeof(x)/sizeof(x[0])<<endl;  //这里输出结果为6
        return 0;
    }

    问题是 在main函数里面的cout<<sizeof(x)/sizeof(x[0])<<endl;输出结果为6

    可是在传参到函数checkArray中去 cout<<sizeof(a)/sizeof(a[0])<<endl;输出结果为1

    这是为什么呢?

    终于还是理解了,原来是数组传参进来的时候已经退化为指针了。

    这个问题搞定了。

    Happy Saturday.

  • 相关阅读:
    用导数解决逗逼初三数学二次函数图像题
    NOIP 2014 pj & tg
    BZOJ 1004
    双参数Bellman-ford带队列优化类似于背包问题的递推
    emu1
    無題
    15 day 1代碼
    javascript quine
    线段树的总结
    Watering the Fields(irrigation)
  • 原文地址:https://www.cnblogs.com/javametro/p/array.html
Copyright © 2011-2022 走看看