Другие языки программирования и технологии

Помогите с Си. Вопрос по заданию (насчет типизированной функции, которая должна возвращать массив)

Как это организовать? Может ли функция возвращать массив и иметь запись например return *A (т. е. с указателем)
В гл функции этот массив имеет двойной указатель. Какой вид будет иметь вызов типизированной функции.
Например в мейне : **A=sort2(&A[0][0],m,n);
Верно?
Denka Popchenco
Denka Popchenco
13
#include <iostream>
#include <iomanip>
using namespace std;
int** matrix(int = 5, int = 8);
void print(int**, int = 5, int = 8, streamsize = 3);
void destroy(int**, int = 5);
int main() {
int** ptr = NULL;
if (ptr = matrix()) {
print(ptr);
destroy(ptr);
ptr = NULL;
}
else cout << "\a Error!\n";
cin.get();
}
void print(int** mx, int rw, int cl, streamsize w) {
for (int r = 0; r < rw; ++r, cout << "\n") for (int c = 0; c < cl; ++c) cout << setw(w) << mx[r][c];
cout << "\n";
}
void destroy(int** mx, int rw) {
if (mx && rw) {
for (int r = 0; r < rw; ++r) delete[] mx[r];
delete[] mx;
}
}
int** matrix(int rw, int cl) {
int** ptr = NULL;
int n = 0;
if (ptr = new (nothrow) int*[rw]) {
for (int r = 0; r < rw; ++r) {
if (ptr[r] = new (nothrow) int[cl]) for (int c = 0; c < cl; ++c) ptr[r][c] = ++n;
else {
for (int c = 0; c < r; ++c) delete[] ptr[c];
delete[] ptr;
ptr = NULL;
break;
}
}
}
return ptr;
}
Игорь Королёв
Игорь Королёв
96 818
Лучший ответ
Все в кучу. 1) В STL sort определяется как void, не нужно ничего возвращать, если ты структуру модифицируешь. 2) К чему относится = или ++,правильно, это оно называется оператор, он может данные копировать целиком в существующий контейнер или указатели замещать и относится к *A, т. е. в классе A должно определяться, а там смотря что за массив.

Похожие вопросы