Это может быть достигнуто с помощью указателя, но если вы еще не используете его, то я предполагаю, что вы не знакомы с концепцией. Таким образом, первое решение без использования указателя.
Решение 1
В этом решении. перед использованием переменной too_a выполняется проверка, чтобы увидеть, изменилось ли значение a. Это не автомат c и, следовательно, не может рассматриваться как решение. Но это то, что вы получите от меня без использования указателей.
#include <stdio.h>
void main(){
unsigned int a = 2;
unsigned int also_a = a;
unsigned int prev_a = a;
unsigned int b = 1;
a+=b;
// also_a will be used. So check.
if(prev_a != a)
also_a = a;
printf("\n%d %d\n", a, also_a);
}
Решение 2
Я буду использовать указатели. Будет одна переменная и одна ссылка на нее. Я постараюсь объяснить указатели после решения.
#include <stdio.h>
void main(){
unsigned int a = 2;
unsigned int *also_a = &a; // also_a is a pointer that stores the address of a
unsigned int b = 1;
a+=b;
printf("\n%d %d\n", a, *also_a);
}
Пояснение
Использование переменных в решении 1: Что происходит в случае a
и also_a
, там две отдельные переменные в двух разных местах памяти. У каждого свои: имя, значение и адрес. Таким образом, есть два места, где мы можем хранить наше целое число без знака. Любые изменения, которые происходят в a
, не влияют на also_a
.
Чтобы разрешить изменение also_a
на a
, мы можем проверить, изменилось ли a, а затем присвоить значение a
also_a
.
Использование указателей в решении 2 В решении 2 есть только 1 переменная a
. Таким образом, есть только одно: имя, значение и местоположение. also_a
с другой стороны - это специальный тип специального типа переменной, называемый указателем, который может хранить только адрес некоторого другого местоположения. Таким образом, есть только одно место, где мы можем хранить целое число без знака. Вторая переменная, которую мы будем называть указателем, «указывает» на это место. Таким образом, любое изменение, внесенное в значение, хранящееся в этом месте: влияет на переменную и значение, указанное указателем.
Нам не нужно ничего проверять. Просто измените значение, и все переменные и указатели будут обновлены.
Я бы порекомендовал узнать больше об указателях, если у вас есть такие требования. Вот хорошее видео, которое может помочь . Хотя это видео на C ++, оно полностью соответствует C.