1

Тема: Поясніть за вказівники на вказівники на вказівники і т.д.

Хай. От, я так зрозумів, що вказівни це щось типу посилання на місце в пам'яті, де зберігається дані певного типу. Коли ми створюємо вказівник, то ми можемо отримати з нього як адресу, так і значення. А чому з простої змінної ми не можемо отримати адреси, де зберігається її значення?

І поясніть ще за різницю між змінними і вказівниками.
Якщо функція приймає просто змінну певного типу, то при виклику цієї функції робиться копія змінної, котра передається як аргумент, ага? А якщо функція приймає вказівник, то ми можемо в функції змінити значення використовуючи вказівник, і при цьому, якщо після роботи функції ми виведемо (поза межами функції) значення, котрому відповідав той вказівник, то воно вже буде іншим, ну типу в функції воно зміниться, ага? А шо ще? Як ще використовують вказівники, і навіщо робити вказівники на вказівники, в яких випадках це корисно?

2

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

Вказівник це по суті те ж змінна просто вона тримає в собі адресу іншої змінної. відповідно знаючи адресу ми можемо змінити дані по цій адресі, тому якщо передати в функцію вказівник то значення зміниться і за межами функції. Їх взагалі часто використовують, і по різному, включно зі всяких збоченями. Але напевно перше практичне застосування з яким кожен зустрічався це динамічні масиви)

Подякували: leofun011

3

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

drWoZD написав:

Вказівник це по суті те ж змінна просто вона тримає в собі адресу іншої змінної. відповідно знаючи адресу ми можемо змінити дані по цій адресі, тому якщо передати в функцію вказівник то значення зміниться і за межами функції. Їх взагалі часто використовують, і по різному, включно зі всяких збоченями. Але напевно перше практичне застосування з яким кожен зустрічався це динамічні масиви)

і як ті вказівникові динамічні масиви працюють? а то я звик до List'ів С#'а

4

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

А чому з простої змінної ми не можемо отримати адреси, де зберігається її значення?

Можем, якщо дуже треба.

Подякували: leofun011

5

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

quez написав:

А чому з простої змінної ми не можемо отримати адреси, де зберігається її значення?

Можем, якщо дуже треба.

ну я не мав на увазі використовування вказівника для цього

6

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

Можна і без

Подякували: leofun011

7 Востаннє редагувалося yarko (26.06.2014 16:12:47)

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

FakiNyan написав:
drWoZD написав:

Вказівник це по суті те ж змінна просто вона тримає в собі адресу іншої змінної. відповідно знаючи адресу ми можемо змінити дані по цій адресі, тому якщо передати в функцію вказівник то значення зміниться і за межами функції. Їх взагалі часто використовують, і по різному, включно зі всяких збоченями. Але напевно перше практичне застосування з яким кожен зустрічався це динамічні масиви)

і як ті вказівникові динамічні масиви працюють? а то я звик до List'ів С#'а

int *masiv = new int[10];
masiv[4];
//значення п'ятого елемента в масиві з десяти елементів
// те саме що і *(masiv+4);

QList теж використовує для зберігання даних динамічні масиви. Тільки користувачу не показує :)

8

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

Зараз заплутаєте Факіняна і він буде думати, що це лише для динамічних масивів.

9

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

yarko написав:
FakiNyan написав:
drWoZD написав:

Вказівник це по суті те ж змінна просто вона тримає в собі адресу іншої змінної. відповідно знаючи адресу ми можемо змінити дані по цій адресі, тому якщо передати в функцію вказівник то значення зміниться і за межами функції. Їх взагалі часто використовують, і по різному, включно зі всяких збоченями. Але напевно перше практичне застосування з яким кожен зустрічався це динамічні масиви)

і як ті вказівникові динамічні масиви працюють? а то я звик до List'ів С#'а

int *masiv = new int[10];
masiv[4];
//значення п'ятого елемента в масиві з десяти елементів
// те саме що і *(masiv+4);

QList теж використовує для зберігання даних динамічні масиви. Тільки користувачу не показує :)

так він же не динамічний

10

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

quez написав:

Можна і без

ну так перший елемент масиву по суті являється вказівником на початок масиву

11

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

так він же не динамічний

Як не дивно, він динамічний. Логіка приблизно така ж, як і у назві std::vector.

12

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

quez написав:

так він же не динамічний

Як не дивно, він динамічний. Логіка приблизно така ж, як і у назві std::vector.

як це так? але ж в ньому зазначено, що він має 10 елементів, а якщо я захочу 11 впихнути??? де ваша динамічність тепер???

13

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

int  a,
    *p = &a;
    &r = a;
*p = 10;
cout << r ;// 10

ще питання?

Подякували: leofun011

14

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

FakiNyan написав:
quez написав:

так він же не динамічний

Як не дивно, він динамічний. Логіка приблизно така ж, як і у назві std::vector.

як це так? але ж в ньому зазначено, що він має 10 елементів, а якщо я захочу 11 впихнути??? де ваша динамічність тепер???

От я і кажу: це та сама збочена логіка.

15

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

koala написав:
int  a,
    *p = &a;
    &r = a;
*p = 10;
cout << r ;// 10

ще питання?

динамічні масиви типу List в C# як зробити?

16

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

Хіба в університетах такого не мають навчати? І які там динамічні масиви типу List в C#? Моєе хтось не знає.

17

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

Вам контейнери потрібні

http://i.stack.imgur.com/kQnCS.png

18

Re: Поясніть за вказівники на вказівники на вказівники і т.д.

array та valarray не згадані, до речі.