Я только начал изучать C++ и пришел к Arrays
. Поэтому я хочу выполнить некоторую функцию в массиве, которая была передана в function
. Так для этого я попробовал небольшой примерC++ array дает мне значение для мусора
#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()
дает два значения для одного и того же массива. Исправьте меня, где я где-то не прав.
Я использую программное обеспечение Eclipse с добавленным плагином C++.
Заранее благодарим за помощь!
'SizeOf (данные)' не делать то, что вы думаете, что он делает. Вам нужно передать фактический размер массива функции в качестве параметра, нет другого способа сделать это. –
Также см. Http://stackoverflow.com/questions/1328223/sizeof-array-passed-as-parameter –
Если вы только начали изучать C++, я бы посоветовал вам читать на векторах и использовать их вместо массивов. – dhavenith