Когда вы «помещаете переменную в качестве аргумента», вы передаете значение переменной. Все аргументы C передаются по значению.
invest
необходимо изменить principal
для хранения другого значения, о чем свидетельствует тот факт, что его значение печатается после вызова функции. Как это можно сделать, если все, что ему было дано, это просто копия исходного значения, хранящегося в principal
?
Вот почему первый аргумент, который он принимает, это указатель. main
передает этот адрес из principal
, поэтому invest
может изменять саму переменную.