Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Как возвратить указатель на массив?
Acorn
Вставить ник
сообщение 21:03:2007, 18:36
Цитата Ответить 


Student
**

Группа: Модеры
Сообщений: 237
Регистрация: 29:08:2004
Из: Минск
Пользователь №: 800
Специализация: Delphi, PHP, Shareware, Usability



Репутация: - 0 +


В условии задачи: "Функция должна вернуть указатель на массив". Не знаю как, не получается sad.gif
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 8)
zubr
Вставить ник
сообщение 22:03:2007, 05:09
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 899
Регистрация: 19:11:2003
Пользователь №: 133



Репутация: - 11 +


Код
int MyArray[100];

int* MyFunc()
{
     //Какой то код
    return MyArray;
}
Подняться вверх 
 
Сообщение #2
Acorn
Вставить ник
сообщение 22:03:2007, 11:40
Цитата Ответить 


Student
**

Группа: Модеры
Сообщений: 237
Регистрация: 29:08:2004
Из: Минск
Пользователь №: 800
Специализация: Delphi, PHP, Shareware, Usability



Репутация: - 0 +


Не очень понятно, как получить этот указатель. Вот мой код (который не работает):
Код
#include <iostream>
using namespace std;

int* fSimple(int intMax)
{
    int Array[100];
    Array[0] = 2;
    int intCount = 1;
    bool bGood;
    for (int i = 3; i < intMax; i++)
    {
        bGood = true;
        for (int j = 1; j < intCount; j++)
            if (i%Array[j] == 0) bGood = false;
        if (bGood) Array[++intCount] = i;    
    }
    Array[0] = intCount;
    return Array;
}


int main()
{
    int *p = fSimple(100);
    for (int i = 1; i < p[0]; i++)
        cout << p[i] << " ";
    return 0;
}


P.S. просьба учесть, что эту функцию мне надо в отдельную библиотеку поместить.
Подняться вверх 
 
Сообщение #3
European
Вставить ник
сообщение 22:03:2007, 11:47
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 1 816
Регистрация: 4:09:2006
Из: Минск
Пользователь №: 6 316
Специализация: C++



Репутация: - 31 +


Ты возвращаешь указатель на локальный массив, что делать нельзя, т.к. область видимости данного массива - функция fSimple. С учетом того, что fSimple должна быть в библиотеке и возвращать указатель на массив, то Array нужно объявить как static
Подняться вверх 
 
Сообщение #4
Acorn
Вставить ник
сообщение 22:03:2007, 11:57
Цитата Ответить 


Student
**

Группа: Модеры
Сообщений: 237
Регистрация: 29:08:2004
Из: Минск
Пользователь №: 800
Специализация: Delphi, PHP, Shareware, Usability



Репутация: - 0 +


Всем спасибо за помощь ламеру.
Подняться вверх 
 
Сообщение #5
Acorn
Вставить ник
сообщение 25:03:2007, 17:17
Цитата Ответить 


Student
**

Группа: Модеры
Сообщений: 237
Регистрация: 29:08:2004
Из: Минск
Пользователь №: 800
Специализация: Delphi, PHP, Shareware, Usability



Репутация: - 0 +


Вопрос #2, я динамически создаю структуры в функции, как сделать, чтобы они були доступны в теле программы? На static ругается.
Подняться вверх 
 
Сообщение #6
European
Вставить ник
сообщение 26:03:2007, 07:23
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 1 816
Регистрация: 4:09:2006
Из: Минск
Пользователь №: 6 316
Специализация: C++



Репутация: - 31 +


Если не стоит задача возвращать указатель из функции, то лучше создать указатель на структуру вне функции, передать его в функцию, создать структуру, инициализировав переданный указатель
Подняться вверх 
 
Сообщение #7
-=ФИЛОСОФ=-
Вставить ник
сообщение 28:03:2007, 17:52
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 13
Регистрация: 25:03:2007
Пользователь №: 9 886
Специализация: C++,Pascal,C++Builder,PHP,Delphi,Visual Basic,ASM



Репутация: - 0 +


Можно ещё так:
Код
void main()
{
int arr[100];
int addr;
asm{
      mov ax,offset arr
      mov addr,ax
}
}

в переменную addr помещается адрес массива arr.
Подняться вверх 
 
Сообщение #8
European
Вставить ник
сообщение 29:03:2007, 06:25
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 1 816
Регистрация: 4:09:2006
Из: Минск
Пользователь №: 6 316
Специализация: C++



Репутация: - 31 +


Для: -=ФИЛОСОФ=-
Получить адрес массива и вернуть валидный указатель на массив из функции это не одно и тоже
Подняться вверх 
 
Сообщение #9


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 17:05:2008 - 09:39
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net