Во-первых, параметры, передаваемые в функцию, могут быть только примитивами: int, char, long .... или указателями.Затем, если вам нужно передать более сложный элемент, такой как массив (строки) или функцию, вы должны передать ссылку на этот элемент.
Второе, о чем я могу быстро подумать: параметры всегдапередается по «значению».Это означает, что вызываемая функция получает только копию вашей переменной.Таким образом, изменения коснутся только копии, исходная переменная останется неизменной.Если вы передаете переменную с помощью «ссылки» с указателем, сам указатель является неизменным, но, поскольку он является ссылкой на исходную переменную, любая модификация указанного элемента также повлияет на переменную в функции вызывающей стороны.Другими словами, если вы хотите создать функцию, которая может изменять переменную, вы должны передать ей указатель на эту переменную, чтобы добиться этого.