2014-09-30 3 views
0

Я только начал изучать массивы в качестве параметров функции, и я просто не могу склонить голову вокруг него. Я пытаюсь создать функцию, которая запрашивает у пользователя ввод значений матрицы, а затем возвращает матрицу обратно к ним. Однако я не могу заставить его работать, ниже приведен пример одной из моих попыток. Может ли кто-нибудь помочь мне разобраться, как заставить его работать? Благодарю.Попытка вычислить массивы как функциональные параметры

#include<iostream> 
#include<cstdlib> 
using namespace std; 
void fillinvalues(int m[4]){ 
cout<<"Enter the first element in your matrix\n"; 
cin>>m[0]; 
cout<<"Enter the second element in your matrix \n"; 
cin>>m[1]; 
cout<<"Enter the third element in your matrix \n"; 
cin>>m[2]; 
cout<<"Enter the fourth element in your matrix \n"; 
cin>> m[3]; 
cout<<m[0]<<","<<m[1]<<"\n"<<m[2]<<","<<m[3]; 


} 

int main(){ 

fillinvalues(); 

return 0; 
} 
+1

Массив «m» не создан магически, вам нужно передать его в functio n –

+0

fillinvalues ​​требует ввода целочисленного массива, размер которого, к сожалению, не предоставил ничего при вызове функции в главном! – Decipher

+0

@Decipher Но учтите, что он примет любой указатель на 'int'. – juanchopanza

ответ

0

Вы должны указать параметр fillinvalues(),

int main(){ 

     int m[4]; 
     fillinvalues(m); 

     return 0; 
    } 

Btw, для определения fillinvalues, вам не нужно предоставить номер 4.

Таким образом, вы можете использовать

void fillinvalues(int m[]) { 
    ... 
    } 
+0

В этом случае 'int m [4]' лучше, чем 'int m []'. Функция в любом случае небезопасна, но, по крайней мере, предыдущие шоу для наблюдения за намерением работать с массивом размера 4. – kotlomoy

+0

@ kotlomoy Я бы сказал, что лучше всего 'int * m', таким образом нет путаницы. В противном случае неопытные пользователи могут предположить, что они получают ошибку компилятора, если они не передают массив размера-4. – juanchopanza

+0

@juanchopanza: Я бы сказал, что 'int (* m) [4]' лучше. – kotlomoy

Смежные вопросы