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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2010, 20:22   #1
HostileZeth
 
Регистрация: 01.12.2010
Сообщений: 8
По умолчанию Передача значений переменных функциями

Добрый день. Помогите пожалуйста.
Значения введенные и присвоившиеся в одной функции остаются неизменными в другой. Не пойму в чём дело. А теперь ситуация в подробностях.
Код:
struct student //я создаю структуру
    {
char imya[bukvi];
char *famil;
int fr;
int i;
int *pi;
int mr;
float fl;
    };

int init (student a) //и делаю процедуру создания в указателях этой структуры массивов
{
    cout<<"Proverka zna4enij "<<a.fr<<"  "<<a.mr<<endl; //проверяю начальные значения. выводит 0 и 255
    cout<<"Vvedite razmer dinami4eskoi stroki"<<endl;
    cin>>a.fr;
    cout<<"4islovogo massiva"<<endl;
    cin>>a.mr; //запрашиваю размеры для массивов с клавиатуры
    a.famil=new char[a.fr]; //создаю структуры
    a.pi=new int[a.mr];
    cout<<"Initialization completed: "<<a.fr<<"  "<<a.mr<<endl; //проверяю значения. программа выводит значения которые я ввел с клавиатуры.
    return 0;
}

int indig (student a) //процедура заполнения массива
{
    cout<<"a.mr="<<a.mr<<endl; //а тут я проверяю значение A.mr и вижу что оно по прежнему равно 255.
for (int k=0; k<a.mr; k++) {cout<<"Vvod elementa: ";
cin>>a.pi[k];};
return 0;
}
Мне не понятно почему значение a.mr не передалось

Последний раз редактировалось Stilet; 02.12.2010 в 08:33.
HostileZeth вне форума Ответить с цитированием
Старый 01.12.2010, 20:27   #2
nZil
 
Регистрация: 21.11.2010
Сообщений: 5
По умолчанию

Надо передавать параметр по ссылке. Примерно так:
int indig (student &a);
int init (student &a);
nZil вне форума Ответить с цитированием
Старый 01.12.2010, 20:41   #3
HostileZeth
 
Регистрация: 01.12.2010
Сообщений: 8
По умолчанию

Большое спасибо.
Но..
Эмм. Можно с этим поподробнее? Что то у меня не очень выходит.
Я почти не знаю указатели/ссылки по этому подскажи что кроме &a нужно поменять.

Upd: Разобрался. Огромное спасибо за помощь.

Да. Еще...
Подскажите пожалуйста, как реализовать эту функцию с помощью указателя (а не ссылки).
Код:
int clearstr(student& a)
{
    delete a.pi;
    delete a.famil;
    return 0;
}

Последний раз редактировалось Stilet; 02.12.2010 в 08:33.
HostileZeth вне форума Ответить с цитированием
Старый 02.12.2010, 06:26   #4
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от HostileZeth Посмотреть сообщение
Да. Еще...
Подскажите пожалуйста, как реализовать эту функцию с помощью указателя (а не ссылки).

int clearstr(student& a)
{
delete a.pi;
delete a.famil;
return 0;
}
Код:
int clearstr(student *a)
{
    delete a->pi;
    delete a->famil;
    return 0;
}
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 02.12.2010, 16:29   #5
HostileZeth
 
Регистрация: 01.12.2010
Сообщений: 8
По умолчанию

Спасибо. Вы мне помогли.
HostileZeth вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с функциями(передача масива в функцию типа int) sekator Общие вопросы C/C++ 4 27.07.2010 22:13
Передача переменных из листа в себя же Tirendus PHP 6 11.03.2010 18:33
Передача переменных из формы в форму bebecap Общие вопросы Delphi 7 21.09.2009 10:00
Передача переменных между процедурами Wi1D Помощь студентам 2 14.12.2008 23:55
передача переменных между страницами fufel JavaScript, Ajax 10 22.10.2007 17:04