c ++ sizeof返回错误的数组值

时间:2015-12-04 15:09:00

标签: c++ linux windows oop

我在学校学习c ++,我们使用linux ubuntu ...我们正在学习oops,而且我们现在正在上课。

我有两个文件,主文件名为data.cpp,另一个名为mylib.h

我的data.cpp文件包含以下代码:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
#include "mylib.h"
int main() {

    myclass myfile;int i,b=14;// if i change this value its give always me value for 8 in windows and in ubuntu 4
    int arr[b];

//for(int i =0;i<b;i++){cout<<"Inserici Il numero : ";cin>>arr[i];}

    i = myfile.trovaMax(arr);
    cout <<"Arry Size "<<i<<endl;
    cout<<endl;

    return 0;
}

mylib.h文件包含以下代码:

class myclass{
  public:
    int trovaMax (int num[]){
     int curMax=sizeof(num);
/*         for (int i = 0; i<sizeof(num);i++){
           for(int j=0;j<i;j++){
              if(curMax<num[j]){
                  curMax=num[j];
              }//end if cond
           }//end for j loop
        }//end for i loop
*/       return curMax;
    }

   /* int findMinNum (int num[]){
      int curMax=99999;
        for (int i = 0; i<sizeof(num);i++){
           for(int j=0;j<i;j++){
              if(curMax>num[j]){
                  curMax=num[j];
              }//end if cond
           }//end for j loop
        }//end for i loop
       return curMax;
    }

};

问题: sizeof给出了我在trovaMax函数中传递的数组的错误值。在 windows 给我总是值8(如果我在data.cpp文件中更改整数b的值)并且在 linux 总是给我值4.

现在我在家里使用Windows。我使用的程序是dev c ++。

注意:我发现这个问题,我没有找到这个问题的任何答案。

1 个答案:

答案 0 :(得分:1)

传递给函数的不是数组。你传给它一个指针。