Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2012, 01:42   #1
pavelgu
 
Регистрация: 25.03.2012
Сообщений: 7
По умолчанию Вопрос по поводу динамического выделения памяти и указателей

Код:
void buildArray(int *arr,int lenght)
{
int i;
arr = (int*)malloc(lenght * sizeof(int));
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
printf("buildArray print :\n");
for(i=0;i<lenght;i++)
{
printf("%d\n",arr[i]);
}
}
void main()
{
int *arr=NULL;
int length=3;
int i;
buildArray(arr,length);
printf("main print :\n");
for(i=0;i<length;i++)
{
printf("%d\n",arr[i]);
}
}
Вопрос такой почему в майне после вызова функции buildArray указатель arr все ещё равен null?

Последний раз редактировалось ACE Valery; 25.03.2012 в 02:35.
pavelgu вне форума Ответить с цитированием
Старый 25.03.2012, 01:56   #2
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

может глупость скажу, но попробуйте заменить передачу параметра-указателя на параметр-ссылку.
сам не пробовал т.к. уже поздно
GreenWizard вне форума Ответить с цитированием
Старый 25.03.2012, 01:57   #3
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

Вопрос, почему вы не читаете правила форума?
И почему не знаете что при передачи в функцию параметра, параметр копируется. Т.е. вы работаете его копией, а не переменной из мейна.

Я к тому, что в нужно передавать в функцию указатель на arr*.
Код:
void buildArray(int **arr,int lenght)
{
int i;
*arr = (int*)malloc(lenght * sizeof(int));
(*arr)[0] = 1;
(*arr)[1] = 2;
(*arr)[2] = 3;
printf("buildArray print :\n");
for(i=0;i<lenght;i++)
{
printf("%d\n",(*arr)[i]);
}
}
void main()
{
int *arr=NULL;
int length=3;
int i;
buildArray(&arr,length);
printf("main print :\n");
for(i=0;i<length;i++)
{
printf("%d\n",arr[i]);
}
}
Так работать должно.
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Старый 25.03.2012, 02:43   #4
pavelgu
 
Регистрация: 25.03.2012
Сообщений: 7
По умолчанию

Я правила форума читал может я что-то упустил.А как исправить код я знаю просто мне казалось что когда я передаю указатель он указывает на начало какой то памяти и если я в функции меняю что в этой памяти то и в майне это будет "видно"
pavelgu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции для выделения, перераспределения и освобождения памяти ArtGrek Общие вопросы Delphi 9 14.03.2011 03:08
Определение способа выделения памяти (c++) Александр Елис Помощь студентам 2 31.07.2010 20:28
Проблема выделения динамической памяти в С++ oxygen90 Помощь студентам 3 14.09.2009 21:47
Вопрос по поводу памяти! Slava12345 Компьютерное железо 13 04.07.2009 16:59
Динамическая выделения памяти megavolt91 Общие вопросы C/C++ 1 25.05.2009 21:05