C ++ паняцце паказальніка

так, у мяне ёсць свой паказальнік:

int *p = new int(10);

І я друкую наступныя рэчы:

&p which is: 0xbdee018
 p which is: 0xb8c254b0

&p stands for the address of the pointer, and p is stands for the address of the mapped value by the pointer itself.

Як яно ёсць сапраўды, ці гэта цалкам супрацьлеглае?

1

11 адказы

Yes exactly. & gives the address of the element.

так

  • p gives the value currently inside the variable - p being a pointer, you get a pointer (to an int)
  • &p returns the address of p

графічна

  p value = 0xb8c254b0 --> int x 10
  ^
  |-------- 0xbdee018
5
дададзена

Yes you are right . &p stand for address of pointer and p give address where it point.

3
дададзена

p denotes the address of an integer, e.g. int*.

*p denotes the integer stored at p (dereferencing), e.g. int.

&p denotes the address of the pointer p. If p would be an int, you would obtain a pointer-to-int by referencing p, e.g. int*.

2
дададзена

Ды вы зусім правільна.

&p is the the address of the pointer or you can say a pointer of your pointer.

р з'яўляецца паказальнікам масіва з 10 элементаў Int.

2
дададзена

Так, здаецца, што вы атрымалі гэта права.

Для ilustrate:

int i = 42;
int * pointer_to_i = &i;

тады:

i == 42//obvious
&i == pointer_to_i//address, where a value 42 is stored
                  //for the sake of example, let's assume
                  //that &i == 0x12345678
&pointer_to_i//address, where a value 0x12345678 is stored

дадаткова:

  • & gets the address of a variable (you can assign that to a pointer);
  • * dereferences the , that is retreives the actual data stored in a place pointed to by that pointer.
1
дададзена

Я думаю, вы атрымліваеце рэч у правільным шляху. Паказальнік павінен быць дзесьці захоўваць, таму ён мае адрас таксама. Паспрабуйце, каб убачыць памяці з дапамогай адладчыка, выкарыстоўваючы адрас, паказаны ў вашым прыкладзе, паказваюць на адрас

0xbdee018

і праверыць байты, вы павінны ўбачыць у некаторых замовах байт:

0xb8c254b0

г.зн. р .

Парадак байтаў залежыць ад «endianity» ад цэнтральнага працэсара, які вы выкарыстоўваеце

1
дададзена

У C ++, многія людзі аддаюць перавагу Int * р па Int * р . Там няма абсалютна ніякай розніцы паміж імі з пункту гледжання мовы, гэта проста пытанне чалавечага ўспрымання.

  • int* p says: "p is a pointer to an integer".
  • &p is the memory location at which p is stored (ragardless of the data type of p).
  • p is the pointer itself. Its value is a memory location at which an integer ist stored (except if p == 0).
  • *p is (a reference to) the value that p points to.

У C, многія людзі аддаюць перавагу Int * р па Int * р . Ён кажа: « * р з'яўляецца цэлым лікам». Гэта мае тое перавага, што вы не патрапіць у пасткі, як Int * р, д , які аб'яўляе Int * р і Int д .

1
дададзена

P is a pointer to int.(*p) means value at the pointer p which will be value of that int where p is pointing.(&p) will give you address of the pointer,means *(&p)=p.

1
дададзена

Pointer is a variable that stores address of other variable that the pointer points to. This variable itself also has memory address, which is &p in this case if variable name is p. So:

"&p" is stands for the address of the pointer, and "p" is stands for the address of the mapped value by the pointer itself.

Вы маеце рацыю. Акрамя таго, * р атрымае вам значэнне аб'екта ён паказвае. Вы можаце знайсці Binky Pointer Fun відэа карысным.

1
дададзена

Я думаю, што вам трэба разнаймення паказальніка, каб атрымаць на значэнне.

Паспрабуйце надрукаваць * р , так як гэта выводзіць значэнне, якое захоўваецца па адрасе, гэта разыменованный паказальнік.

When you print &p, you are printing the address of the address of p.

Друк р выводзіць паказальнік на р .

1
дададзена

Для паказальнікаў (напрыклад, Int * р):

  • p is the pointer (i.e., address of the pointed object)
  • &p is the address of the pointer.
  • *p is the pointed object (dereferencing).

Для ня паказальнікаў (напрыклад, Int р):

  • p is the data
  • &p is its address
0
дададзена
Гэта ўводзіць у зман, і не ў поўнай меры адказаць на гэтае пытанне. <�Код> & р гэта адрас р , няхай гэта будзе р з'яўляецца паказальнікам ці не.
дададзена аўтар juanchopanza, крыніца