Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» код на C++

Автор: DI0K
Дата сообщения: 04.12.2004 15:00
#include <iostream.h>
int func(){
int a[10][10];
int c=0;
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
a[i][j]=c++;
}
}
return a;
}
main(){
cout<<func();
}

Подскажите, что ни так?

Добавлено
Мне нужно настроить работу с массивом, через функцию. Ни через extern, ни параметром, ни как не работает. подскажите варианты плз.
Автор: CamTracer
Дата сообщения: 04.12.2004 16:29
Все не так.
Во-первых, а - это не int, это int*.
Во-вторых, массив определен внутри функции, и, когда ты делаешь return, указатель, инициализированный в функции, убивается, соответственно возвращается указатель на чушь.
Автор: distance
Дата сообщения: 04.12.2004 19:12
ну, коли юзаем c++ то код может выглядеть например так:
std::vector<std::vector<int> > a(10, std::vector<int>(10));
массив размером 10x10
и именно его возвращать из функции
Автор: DI0K
Дата сообщения: 05.12.2004 07:05
Сенкью, обязательно попробую. А пользовать векторы обязательно? Может массивом можно обойтись?
Автор: TheChampion
Дата сообщения: 05.12.2004 09:27
DI0K
Нет, не обязятельно. Просто без них ты должен будешь самостоятельно выделять и возвращать память в случае динамического массива, а также строго отслеживать выход за границу.
Автор: Arion
Дата сообщения: 06.12.2004 07:57

Код:
#include <iostream.h>


//На самом деле это не очень хорошо, но для нашего случая - сойдет
void func(int a[10][10]){
int c=0;
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
a[i][j]=c++;
}}

}

int main(void){

int a[10][10];
func(a);

for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
cout<<a[i][j];}
cout<<endl;}
return(0);
}

Автор: distance
Дата сообщения: 06.12.2004 19:35
Arion
Такой код потенциально опасен.
Прототип функции func идентичен такому
void func(int a[][10]);
ничто не помешает передать туда массив a[20][10], [5][10], etc - граница теряется при кастинге. для old-style я бы использовал такой прототип:
void func( int (*a)[10][10]);
когда в функцию передатся именно массив определенной размерности
соответственно проверкой типа занимается компилятор

соотв. в программе
int a[10][10];
func(&a);
Автор: alex_L_M
Дата сообщения: 09.12.2004 11:17
Для простых типов, вроде удобней использовать valarray, да и работает он быстрее.
Автор: gvozdader
Дата сообщения: 09.12.2004 16:36
#include <iostream.h>

typedef int _array[10][10];

void func(_array a){
int c=0;
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
a[i][j]=c++;
}}

}

int main(void){

_array a;
func(a);

for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
cout<<a[i][j];}
cout<<endl;}
return(0);
}


можно и так.

Страницы: 1

Предыдущая тема: VB.NET: запись в файл содержимое listbox


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.