C ++数组给了我垃圾值

时间:2015-07-27 18:19:13

标签: c++ arrays garbage

我刚开始学习c ++并来到Arrays。所以我想要做的是对function中传递的数组执行一些函数。所以为此我尝试了一些小例子

#include <iostream>
using namespace std;

void printArray(int data[]){
  cout<<"len is :"<< sizeof(data)<<endl;
  for(int i = 0 ;i<sizeof(data); i++){
     cout<<data[i]<<" ";
  }
  cout<<endl;
 }

int main() {
  int data[] = {1,2,3,4,5,6};
  printArray(data);
  cout<<"in main :"<<sizeof(data)<<endl;
  for(int i = 0 ;i<sizeof(data); i++){
        cout<<data[i]<<" ";
    }
  return 0;
}

以下是我从代码中获得的输出

 len is :8
 1 2 3 4 5 6 738192384 -1126994503 
 in main :24
 1 2 3 4 5 6 738192384 -1126994503 0 0 -1061892411 32677 0 0 -1665163256 32766 0 1 4196851 0 0 0 463403231 1946389667  

我不明白这个过程出了什么问题。或者是我的代码中的一些东西,使这些奇怪的变化发生。并且sizeof()为同一个数组提供了两个值。在任何地方我都错了。

我正在使用添加了c ++插件的Eclipse软件。

提前感谢您的帮助!!

1 个答案:

答案 0 :(得分:2)

如果以这种方式将数组传递给函数,则

sizeof不起作用。尝试使用数组传递大小或传递数组的开始和结束指针。

如果您不介意模板,可以通过引用传递数组:

template<unsigned length>
void printArray(int (&data)[length]) {
    //length is the length of data   
}