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.

  • 相关阅读:
    文件操作-图片的拷贝
    UIBarbuttonItem
    pod 'Masonry' 自动布局
    文件操作——图片保存到本地
    IOS简单的定位
    UITapGestureRecognizer+动画
    KVO
    UIScrollView
    UITextField的使用
    1228.1——计算器(未使用MVC设计模式)
  • 原文地址:https://www.cnblogs.com/javametro/p/array.html
Copyright © 2011-2022 走看看