Хорошо давайте посмотрим:
void m (int num, int nums[])
{
num = 100;
nums[0] = 1000;
}
(. Следующее объяснение упрощено) Вы можете увидеть, что num
простой параметр, и поэтому его value
отдается функции, которая на самом деле является копией исходная переменная. Это называется по умолчанию. Независимо от того, что вы делаете с переменной в своей функции, она будет изменять только локальную копию, но не переменную исходной переменной.
В качестве справочника используется переменная tho nums
. (Обратите внимание, что в сигнатурах функций термин int nums[]
эквивалентен int* nums
.) Вы не даете значение (копию) функции, а ссылку в виде указателя. Вот почему это называется call-by-reference. Если вы изменяете эту переменную, исходное значение изменяется (потому что вы передали только указатель (на самом деле это не ссылка)).
Чтобы получить дополнительную информацию, я предлагаю вам взглянуть на некоторые книги на C++, потому что это очень простая концепция, которую вы должны понимать, если хотите продолжить программирование (с помощью C++). Например, отправной точкой будет cplusplus.com.
Если вы собираетесь изучить C++, вам нужно будет начать использовать контейнеры стандартной библиотеки, такие как ['std :: vector'] (http://en.cppreference.com/w/cpp/container/vector), а не массивы фиксированной длины C-стиля. Также вы проходите по значению, поэтому изменения локальны по объему. – tadman
В какой книге вы изучаете C++, это не объясняет это? –
'm (x, y) cout' является синтаксической ошибкой. Проверьте, что вы отправили точный код, который вы компилируете. –