*a = b;
Это правильно.
a = &b;
Это просто копирование адреса в значение.Язык C передает все аргументы по значению.(C ++ имеет понятие ссылок) Если вы хотите изменить аргумент, переданный в функцию, вам нужно передать адрес или массив и изменить значение, к которому относится адрес или член массива.
Itможет быть лучше объявить и определить функцию следующим образом:
void setToTen(int *pa){
*pa = 10;
}
с этими изменениями от вас:
pa
(указатель на a) позволяет избежать путаницы при использованииa
в качестве значения в вашей главной функции и a
в качестве указателя в SetToTen () - Нет реальной причины где-либо использовать b, если цель состоит в том, чтобы установить переменную, адрес которой передается в10.
- Стиль / синтаксис: в большинстве соглашений C о кодировании используются символы, начинающиеся с нижнего регистра как переменные / методы, и символы, начинающиеся с верхнего регистра как типы.
- Стиль / синтаксис: явный оператор
return
не требуется, если вы не пытаетесь вернуть значение (ваша функция объявлена недействительной) или если вы хотите вернуть преждевременно до конца функции.
Аналогия: ThЕсть два дома: мистер Смит по адресу: 115 Main St., синего цвета, и мистер Джонс по адресу: 205 Elm St., зеленого цвета.У вас есть лист бумаги с адресом мистера Смита.
*a = b;
- это все равно, что раскрашивать дом по адресу на листке бумаги того же цвета, что и дом мистера Джонса.
a = &b;
похоже на изменение адреса на листе бумаги, чтобы он стал адресом мистера Джонса;на самом деле это ничего не значит.