Изменение значения чего-либо в функции

Это тестовый пример для чего-то большего, поэтому так написано. Как я мог сделать этот бит кода, чтобы значение a продолжало увеличиваться? В моем проекте я вызываю функцию, которая анализирует строку из файла. Мне нужно установить значения структуры в определенные значения, которые были установлены в вызове функции (параметры функции были инициализированы в основной функции, как показано в коде ниже).

int increment(int a)
{
    a++;
    return 0;
}
int main()
{
    int a =0;
    int b =0;
    while( b<5){
        increment(a);
        b++;
        cout << "a is: " << a << ". And b is: " << b << "\n";
    }
    system("PAUSE");
}

Благодарю.

 dasblinkenlight10 февр. 2013 г., 02:22
Во многих ситуациях лучше возвращать увеличенное значение, как вint increment(int a) {return a+1;}, Вы называете это какa = increment(a).

Ответы на вопрос(4)

Проходя по ссылке в С за похожий вопрос.

Кроме того, вы можете просто изменить свою функцию приращения, чтобы она возвращала увеличенное значение a, и вызвать ее в main, как показано ниже:

а = приращение (а);

a по значению, поэтому значениеa никогда не может быть изменено.

Одним из решений является:

int increment (int a) { return a + 1; }

Тогда в вашем цикле:

a = increment(a);

Другое решение состоит в том, чтобы пройтиa по ссылке (указатель)

void increment (int *a) { *a = *a + 1; }

и в цикле

increment(&a);
 Richard Schneider10 февр. 2013 г., 02:29
2-я версияincrement был неправ и теперь обновил его.

декларироватьstatic int a = 0; return a++;Изменить подпись наint increment( int* a ) а такжеreturn *a++;декларироватьa в объеме файла того же исходного файла, что иincrement()Сделатьa ГлобальныйСделайте это в C ++ и передайтеa по ссылке

Передать свой адрес в инкремент

void increment(int *a){
  (*a)++;  
}
increment(&a);
//Using the address of operator pass in the address of a as argument
 Richard Schneider10 февр. 2013 г., 02:31
@ Льюис Терин Разве это не просто увеличение указателя; не значение?
 Lews Therin10 февр. 2013 г., 02:34
@RichardSchneider Приоритет оператора? Вы могли бы быть правы, я не делал C целую вечность. Я поставил скобку, чтобы быть явным.

Ваш ответ на вопрос