изменение структуры в функции

Модератор: Модераторы разделов

sol11
Сообщения: 6

изменение структуры в функции

Сообщение sol11 »

Давольно нубский вопрос.
Допустим есть код
struct mystruct {
int i;
}
void myfunc() {
mystruct myprot;
myprot.i = 10;
}
int main() {
myfunc();
cout << myprot.i; // тут проблема
return 0;
}
вообщем как мне быть с этим?
Спасибо сказали:
Аватара пользователя
кодировщик
Сообщения: 974
Статус: зарёган в пятницу 13
ОС: Linux

Re: изменение структуры в функции

Сообщение кодировщик »

Думаю поймёте

Код: Выделить всё

struct mystruct
{
int i;
};

int myfunc()
{
struct mystruct myprot;
myprot.i = 10;
return myprot.i;
}

int main()
{
printf("\n from myfunc=%d \n",myfunc());
return 0;
}
Спасибо сказали:
sol11
Сообщения: 6

Re: изменение структуры в функции

Сообщение sol11 »

код я написал для примера, в структуре несколько элементов разных типов
Спасибо сказали:
Sleeping Daemon
Сообщения: 1450

Re: изменение структуры в функции

Сообщение Sleeping Daemon »

sol11 писал(а): ↑
04.07.2009 23:17
код я написал для примера, в структуре несколько элементов разных типов

Переменные создаются внутри функции. За пределами функции они не существуют.
Спасибо сказали:
sol11
Сообщения: 6

Re: изменение структуры в функции

Сообщение sol11 »

С помощью указателей получилось

typedef struct
{
char a;
char b;
} mystruct;

void myfunc(mystruct *pStruct)
{
pStruct->a=1;
pStruct->b=2;
}

...

struct mystruct test;
myfunc(&test);
Спасибо сказали:
Аватара пользователя
кодировщик
Сообщения: 974
Статус: зарёган в пятницу 13
ОС: Linux

Re: изменение структуры в функции

Сообщение кодировщик »

sol11 писал(а): ↑
04.07.2009 23:57
С помощью указателей получилось

typedef struct
{
char a;
char b;
} mystruct;

void myfunc(mystruct *pStruct)
{
pStruct->a=1;
pStruct->b=2;
}

...

struct mystruct test;
myfunc(&test);

Тут вы в функцию передаёте значение, в первом примере ничего не передовали, и ничего не возвращали.
Спасибо сказали:
sol11
Сообщения: 6

Re: изменение структуры в функции

Сообщение sol11 »

Да, моя вина, топик составил очень криво
Спасибо сказали: