Допустим, дан мне массив array[2][2], и как к нему обратиться?
Void shet(int arr[][2], int num)
{
for(int i=0; i<num; i++){
cout<<endl;
for (int j=0; j<num; j++) cout<<setw(3)<<arr[i][j]<<" ";}
}
C/C++
Как обратиться к функции? с++
// 1 вариант
#include <iostream>
#include <iomanip>
using namespace std;
void sheet(int* begin, int* end, size_t br, streamsize w) {
if (begin && end && br && begin < end) {
auto n = 0U;
do {
cout << setw(w) << *begin;
if (0 == ++n % br) puts("");
} while (++begin != end);
}
}
int main() {
int box[][2] = {
{ 25, 47 },
{ 58, 62 }
};
auto rows = size(box);
auto cols = size(box[0]);
auto begin = &box[0][0];
auto end = &box[rows - 1][cols];
sheet(begin, end, cols, 3);
system("pause > nul");
}
// 2 вариант
#include <iostream>
#include <iomanip>
using namespace std;
void show(int* row, size_t n, streamsize w) {
for (auto i = 0U; i < n; ++i) cout << setw(w) << row[i];
puts("");
}
int main() {
int box[][2] = {
{ 25, 47 },
{ 58, 62 }
};
for (auto& row : box) show(row, size(row), 3);
system("pause > nul");
}
// 3 вариант
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int box[][2] = {
{ 25, 47 },
{ 58, 62 }
};
for (auto& row : box) {
for (auto x : row) cout << setw(3) << x;
puts("");
}
system("pause > nul");
}
#include <iostream>
#include <iomanip>
using namespace std;
void sheet(int* begin, int* end, size_t br, streamsize w) {
if (begin && end && br && begin < end) {
auto n = 0U;
do {
cout << setw(w) << *begin;
if (0 == ++n % br) puts("");
} while (++begin != end);
}
}
int main() {
int box[][2] = {
{ 25, 47 },
{ 58, 62 }
};
auto rows = size(box);
auto cols = size(box[0]);
auto begin = &box[0][0];
auto end = &box[rows - 1][cols];
sheet(begin, end, cols, 3);
system("pause > nul");
}
// 2 вариант
#include <iostream>
#include <iomanip>
using namespace std;
void show(int* row, size_t n, streamsize w) {
for (auto i = 0U; i < n; ++i) cout << setw(w) << row[i];
puts("");
}
int main() {
int box[][2] = {
{ 25, 47 },
{ 58, 62 }
};
for (auto& row : box) show(row, size(row), 3);
system("pause > nul");
}
// 3 вариант
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int box[][2] = {
{ 25, 47 },
{ 58, 62 }
};
for (auto& row : box) {
for (auto x : row) cout << setw(3) << x;
puts("");
}
system("pause > nul");
}
Так к нему уже есть обращение в функции. Точно так же можно обращаться и в основной программе.
Этот массив передается в функцию снаружи. Вот где его инициализируете, там и обращайтесь.
Внутри функции обращение тоже есть
cout<<setw(3)<<arr[i][j]<<" ";
Внутри функции обращение тоже есть
cout<<setw(3)<<arr[i][j]<<" ";
Void shet(int ** arr, int num)
Такой заголовок проще — не приходится указывать размеры.
Такой заголовок проще — не приходится указывать размеры.
Сагынбек Боронбаев
Двойной указатель не будет передавать в функцию двумерный статический массив. Это разные типы данных.
Похожие вопросы
- Не могу разобраться. Функция удаления отрицательных элементов вектора
- Как в функции распечатать двумерный динамический массив в Си
- Как завершить условие в функции?
- Передача в метод класса указателя на функцию C++
- Возвращение функции return func(); (Си)
- Как работать с элементами динамического массива из функции?
- Что за число хранится в имени функции? (Си)
- Добавить функцию в код [C++]
- Функции и массивы в С++
- Программа интерполяции таблично заданной функции