Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
21:03:2007, 18:36
|
|
Student ![]() ![]() Группа: Модеры Сообщений: 237 Регистрация: 29:08:2004 Из: Минск Пользователь №: 800 Специализация: Delphi, PHP, Shareware, Usability Репутация: 0
|
В условии задачи: "Функция должна вернуть указатель на массив". Не знаю как, не получается
|
|
Сообщение
#1
|
|
![]() |
|
|
22:03:2007, 05:09
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 899 Регистрация: 19:11:2003 Пользователь №: 133 Репутация: 11
|
Код int MyArray[100];
int* MyFunc() { //Какой то код return MyArray; } |
|
Сообщение
#2
|
|
|
|
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
|
|
|
|
22:03:2007, 11:47
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 816 Регистрация: 4:09:2006 Из: Минск Пользователь №: 6 316 Специализация: C++ Репутация: 31
|
Ты возвращаешь указатель на локальный массив, что делать нельзя, т.к. область видимости данного массива - функция fSimple. С учетом того, что fSimple должна быть в библиотеке и возвращать указатель на массив, то Array нужно объявить как static
|
|
Сообщение
#4
|
|
|
|
22:03:2007, 11:57
|
|
Student ![]() ![]() Группа: Модеры Сообщений: 237 Регистрация: 29:08:2004 Из: Минск Пользователь №: 800 Специализация: Delphi, PHP, Shareware, Usability Репутация: 0
|
Всем спасибо за помощь ламеру.
|
|
Сообщение
#5
|
|
|
|
25:03:2007, 17:17
|
|
Student ![]() ![]() Группа: Модеры Сообщений: 237 Регистрация: 29:08:2004 Из: Минск Пользователь №: 800 Специализация: Delphi, PHP, Shareware, Usability Репутация: 0
|
Вопрос #2, я динамически создаю структуры в функции, как сделать, чтобы они були доступны в теле программы? На static ругается.
|
|
Сообщение
#6
|
|
|
|
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
|
|
|
|
29:03:2007, 06:25
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 816 Регистрация: 4:09:2006 Из: Минск Пользователь №: 6 316 Специализация: C++ Репутация: 31
|
Для: -=ФИЛОСОФ=-
Получить адрес массива и вернуть валидный указатель на массив из функции это не одно и тоже |
|
Сообщение
#9
|
|
![]() |
|
Текстовая версия | Сейчас: 17:05:2008 - 09:39 |