C++ 数组给了我垃圾值
C++ array gives me garbage value
刚开始学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()
为同一个 array.Correct 我提供了两个值,我在任何地方都错了。
我正在使用添加了 c++ 插件的 Eclipse 软件。
在此先感谢您的帮助!!
如果以这种方式将数组传递给函数,sizeof
将不起作用。尝试用数组传递大小或传递数组的开始和结束指针。
如果你不介意模板,你可以通过引用传递数组:
template<unsigned length>
void printArray(int (&data)[length]) {
//length is the length of data
}
刚开始学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()
为同一个 array.Correct 我提供了两个值,我在任何地方都错了。
我正在使用添加了 c++ 插件的 Eclipse 软件。
在此先感谢您的帮助!!
sizeof
将不起作用。尝试用数组传递大小或传递数组的开始和结束指针。
如果你不介意模板,你可以通过引用传递数组:
template<unsigned length>
void printArray(int (&data)[length]) {
//length is the length of data
}