С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Понять указатели:) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Распечатать введенную строку, удалив из неё слова с нечетными номерами и добавив перевернутое слово к слову с четными номерами. http://www.cyberforum.ru/cpp-beginners/thread254809.html
Распечатать введенную строку, удалив из неё слова с нечетными номерами и добавив перевернутое слово к слову с четными номерами. Например, из строки: "во что бы то ни стало" Должно получиться:...
C++ Представить число в виде многочлена Дано натуральное число А. Надо составить программу (С++), которая представляет его в виде многочлена. Например, 123 ==> 1 * 10 ^ 2 + 2 * 10 ^ 1 + 3 * 10 ^ 0. /*fizmat goroda Kamenets-Podolsky... http://www.cyberforum.ru/cpp-beginners/thread254798.html
C++ Указатели на структуры!
Захватить память для массива из 10 структур. Заполните массив данными из файла "1.dat". Вывести информацию о маршрутах, имеющих определенный пункт в качестве начального или конечного. Высчитать для...
C++ Вычислить период последовательности
Подскажите, как вычислить период последовательности. Как я понимаю, поместить сперва элементы в массив, и уже в нем считать период? ... long t, k, p, a, c, n=20; // p - Xo, t, k - Xn, int...
C++ Определите класс «Студент» http://www.cyberforum.ru/cpp-beginners/thread254763.html
Помогите пожалуйста с задачей Определите класс «Студент».Методы – перевод на следующий курс, выпуск, отчисление. Разработать дружественную классу «Студент» функцию, определяющую знак зодиака,...
C++ решить функцию Всем привет! помогите пожалуйста решить задачки на Borland C Буду крайне признательна! Заранее спасибо! подробнее

Показать сообщение отдельно
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
13.03.2011, 22:57
Извините, что так внезапно исчез - инет весь день не работал.

Temirlan90, на счёт передачи параметров в функцию. Параметры функции являются локальными переменными этой функции, то есть находятся в её пространстве имён:

C++
1
2
3
4
void bar( int a, int b )
{
   //a и b находятся в этом пространстве имён
}
Когда вы вызываете функцию и передаёте ей параметры, создаются локальные переменные для этих параметров, и значения, которые вы передали, копируются в эти локальные переменные. То есть, если я сделаю:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void add( int a, int b )
{
   a = a + b;
}
 
int main()
{
   int main_a = 15;
 
   add( main_a, 15 );
   cout << main_a << endl;
 
   return 0;
}
... переменная main_a не изменится, так как её значение скопируется в переменную int a пространства имён функции add(). Если вы хотите изменить какую-то переменную, передайте функции адрес этой переменной (через указатель или ссылку):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void add( int * a, int * b )
{
   *a = *a + *b; //разыменовывание указателей
}
 
int main()
{
   int main_a = 15;
   int main_b = 25;
 
   add( &main_a, &main_b ); //передача адресов
   cout << main_a << endl;
 
   return 0;
}
В этом случае в локальные переменные int * a и int * b скопируются адреса переменных main_a и main_b, а функция add, беря эти адреса, будет изменять значения, которые лежат по этим адресам, то есть переменные main_a и main_b.

Пример с image_swap аналогичен.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.