Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int function (char data[5]) и
- int function (char *data)
- int function (int *data)
- int function (double *data) и тд
- Фактически одно и тоже. Адрес в памяти на оригинал. Меняешь в функции - меняешь и оригинал.
- void function (int *data) //адрес на ячейку, где лежит оригинал
- {
- data = 12; //перетер, что лежало в оригинале
- }
- main()
- ...
- int a = 5;
- function(a);
- //а теперь равно 12
- int function (char data)
- int function (int data)
- int function (double data) и тд
- Передаешь КОПИЮ переменой
- void function (int data) //тут не адрес, тут новая копия переменной по другому адресу
- {
- data = 12; //перетер копию, оригинал не пострадал
- }
- main()
- ...
- int a = 5;
- function(a);
- //а все равно 5
- Вывод, массивы передается через указатель, а не копию. При передаче копии - ничего не меняется. При передаче указателя - переписываешь значения по этому адресу.
- Теперь const
- void function (const int *data) //адрес на ячейку, где лежит оригинал. Но компилятору говорим - менять нельзя!
- {
- data = 12; //вот тут у тебя ошибка компиляции будет, так как ты говорил, что значение константное. Т.е. это не защита времени выполнения, это защита при КОМПИЛЯЦИИ.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement