У чым розніца паміж int * p і * p у C?


адказ 1:

int * p - гэта дэкларацыя зменнай з імем "p", у якой захоўваецца адрас іншай зменнай тыпу "Integer". Гэта паказальнік.

* p пазначае значэнне зменнай, адрас якой захоўваецца ў p.

Напрыклад:

int * p // Абвяшчае зменную для захавання адраса іншай зменнай тыпу Integer.

int x = 8; // Значэнне 8 было прызначана зменнай тыпу Integer.

р =? // адрас месцазнаходжання, дзе захоўваецца значэнне х, прызначаецца p;

друк (р); // адрас х, у якім захоўваецца 8.

друк (* р); // Значэнне, захаванае па гэтым адрасе, г.зн. Х. 8

друк (х); // Той жа выхад, што і вышэй.

Як наконт Int ** p?

Падумайце.


адказ 2:
  • Паказальнік - гэта пераменная, значэннем якой з'яўляецца адрас іншай зменнай, г.зн. Н. Прамы адрас месцазнаходжання. Як і любую зменную або канстанту, вы павінны аб'явіць паказальнік, перш чым выкарыстоўваць яго для захавання зменнай адраса. Агульная форма аб'явы зменнай паказальніка:
Тып * імя var; eg.int * p

напрыклад:

int * ip; / * Паказальнік на цэлае лік * / double * dp; / * Паказальнік на двайны * / float * fp; / * Паказальнік на паплавок * / char * ch / * паказальнік на знак * /

Праверце гэтую праграму:

#include int main () {int var = 20; / * фактычная дэкларацыя зменнай * / int * ip; / * Абвяшчэнне зменнай паказальніка * / ip = & var; / * Захоўвайце адрас var у зменнай паказальніку * / printf ("адрас зменнай var:% x \ n", & var); / * Адрас, які захоўваецца ў пераменнай паказальніка * / printf ("адрас захоўваецца ў зменнай IP:% x \ n", ip); / * Доступ да значэння з дапамогай паказальніка * / printf ("Значэнне зменнай * ip:% d \ n", * ip); вярнуць 0; }

* p: * p - паказальнік на зменную, як паказана ніжэй. Яго таксама называюць адзіным паказальнікам. Адзіны паказальнік выконвае дзве мэты: стварэнне масіва і змяненне зместу функцыі (перадаецца ў якасці спасылкі).

Вялікі дзякуй .. :)


адказ 3:

Я разважаю над двума рознымі выказваннямі на С, гэта значыць ...

Int * p;

і

* р;

Першая інструкцыя, г.зн. H. Int * p; гэта абвяшчэнне зменнай паказальніка з імем p. На мове З гэтая дэкларацыя звычайна папярэднічае ўсім іншым заявам аб выкананні. Проста згадваючы гэтае выказванне на мове C, стварае паказальнік p, які нічога не спасылаецца.

Напрыклад, разгледзім зменную "var", якую я абвясціў перад тым, як аб'явіць гэты паказальнік. Тады я магу прызначыць адрас var паказальніку p наступным чынам.

int var = 43; Int * p =?

& Var вяртае адрас (месцазнаходжанне) зменнай var. Гэты адрас прызначаецца зменнай паказальніку p.

Цяпер да наступнай заявы. Калі потым мы згадваем дзе-небудзь у праграме, * p азначае, што мы маем на ўвазе значэнне зменнай var.

Гэта значыць, калі вы пішаце заявы наступным чынам:

printf ("% d", p);

выводзіць "адрас" зменнай var. І заявы кшталту:

printf ("% d", * p);

Вяртае значэнне, якое захоўваецца ў зменнай var.

Цяпер вам трэба ведаць, як змяніць значэнне зменнай var, выкарыстоўваючы аператар =

var = 33;

Вы можаце зрабіць тое ж самае са зменай паказальніка:

* р = 33; // Дапушчальнае і змяняе значэнне p = 33, якое захоўваецца ў зменнай var; // Няправільнае выказванне, таму што p у цяперашні час спасылаецца на адрас var, а не на значэнне var.

У тлумачэнні вышэй, мяркуецца, што вы ведаеце, якія зменныя паказальнікі даступныя ў мове C.