В ответ на ваш последний комментарий я постараюсь объяснить.
Вы знаете, что переменные содержат значение , а тип переменной говорит вам, какие значения она может содержать. Таким образом, переменная типа int
может содержать целое число, попадающее в определенный диапазон. Если я объявлю функцию вроде:
int sq(int x);
... тогда это означает, что функция sq
требует, чтобы вы указали значение, являющееся целым числом, и вернет значение, которое также является целым числом.
Если переменная объявлена с указателем типа, это означает, что значением самой этой переменной является «местоположение другой переменной». Таким образом, переменная типа int *
может содержать в качестве значения «местоположение другой переменной, и эта другая переменная имеет тип int
». Затем мы можем распространить это на функции:
int sqp(int * x);
Это означает, что функция sqp
должна предоставить вам значение, которое само является местоположением переменной типа int
. Это означает, что я мог бы назвать это так:
int p;
int q;
p = sqp(&q);
(&q
просто означает «дай мне местоположение из q
, а не его значение»). В пределах sqp
я мог бы использовать этот указатель так:
int sqp(int * x)
{
*x = 10;
return 20;
}
(*x
означает «воздействовать на переменную в месте, заданном x , а не на x»).