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

标签 c++ linux windows oop

我在学校学习 C++,我们使用 linux ubuntu...我们正在学习 oops,并且我们现在正在 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++。

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

最佳答案

您传递给函数的不是数组。您正在向它传递一个指针。

关于C++ sizeof 返回数组的错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34091360/

相关文章:

c++ - 检测按键按下和按键释放事件

linux - 如何创建一个可以扫描文件中特定单词的 shell 脚本?

c# - WPF 使 ListView 高度与 Grid 行高相同

c++ - C++ Express 版缺少哪些 Visual Studio 2008 生产力功能?

C++ void* 内存遍历

linux - 使用 SSH 在远程 Linux 计算机上运行带有参数的cleartool 命令

regex - 无法使用 AWK 读取两个模式之间的行

android - Cordova Build Android 失败,退出代码为 ENOENT

c++ - fstream - 如何 seekg() 以从末尾定位 x

c++ - 如何在同一台计算机上同时安装多个版本的 llvm libc++(ubuntu)?