C語言中p a就是指標p指向變數a的地址嗎

2021-05-23 23:20:25 字數 5243 閱讀 9025

1樓:白狼聖狂

那要看是什麼情況了,如果是定義的時候賦值就是把a的地址賦給p如:int a;

int* p = &a;

如果不是初始化就是把a的地址賦給p裡儲存的地址,如:

int a;

int* b;

int* p;

p = &b;    //p指向b的地址

*p = &a;   //讓b存著a的地址執行結果如下

第二項試圖將a的地址放在p指向的b裡,因為b是(int),而a的地址是(int*),發生了錯誤

直接賦值等" int* p = &a; "同於" int *p; p = &a ",不要弄錯

c語言中,指標變數p,整型變數a,p指向a;那麼*p 、 p、 a、 &a是什麼關係?

2樓:匿名使用者

指標類的題目記住一個原則,就是兩邊型別要一致。

因此,*p=a和p=&a是對的,其餘是錯的。

在這裡p是指標,而*p是變數,所以*p=a是對的。

什麼是指標,指標就是地址,因此p=&a是對的。

這裡最容易混淆的一點是:定義時的寫法可以特殊一點。例如:

int a=8; int *p=&a;

這也是對的,儘管違背了我前面前的原則(左邊是變數右邊是地址),但這是定義,等同於:

int a=8; int *p; p=&a;

3樓:匿名使用者

*p=a,意思是將a的值賦給指標變數p,

*p=&a是兩重指標的概念

p=&a意思是將a的地址賦給p,前面一般要先進行定義 int *pp=a語法錯誤

4樓:匿名使用者

*p=a,p=&a是對的。

*是取地址所指向的內容(值);

&是取變數的地址。

指標變數的內容(值)就是一個地址值,指標其實「就是」地址。

5樓:匿名使用者

*p=a, p=&a是對的

c語言中p=&a和p->a的區別,不是都表示指標p指向a嗎

6樓:匿名使用者

->只有在出現類的環境中才可用到,而&則隨時可用。

舉個例子有個類(或結構)x當中有整形成員a:

class x

;這時我們宣告該類的一個物件a,並用你提到的第一句話來將a的地址賦值給指標p:

x a;

x* p = &a;

再寫語句如果需要呼叫p指向的地址中的變數,也就是物件a,那麼用如下表示式:

*p如果要訪問a中的成員a,那麼用如下表示式:

a.a如果想利用指標p來實現上述目的,那麼用如下表示式:

(*p).a

c++的編寫者將上述表示式簡單寫為:

p->a

7樓:匿名使用者

->指標操作符的優先順序非常高,。p->a是取得p指向結構體的成員a,等價於(*p).a

p=&a表示p是一個指標,&a的地址賦予pstruct data

; /*定義結構體*/struct data * p;/*定義結構體指標*/struct data a = ;/*宣告變數a*/int x;/*宣告一個變數x*/

p = &a ; /*讓p指向a*/

x = p->a;/*這句話的意思就是取出p所指向的結構體中包含的資料項a賦值給x*/

/*由於此時p指向a,因而 p->a == a.a,也就是1*/

8樓:丿北城丨涼築

a和p是變數,&a和*p是表示式,1和0x1000是常量a和*p表示的都是整形左值,p和&a表示的都是指標型左值,1和0x1000表示整形和指標型右值。(左右值的概念不清的話,google一下)

在記憶體中,a和p有儲存空間空間,a存放著1,p存放著0x1000,*p和&a沒有空間,他們的運算結果是在暫存器中存放的,1和0x1000也有空間,在程式的常量段存放。

*p按照stanley lippman的著作《c++ primer》中的描述,p是指標變數,*是解引用操作符,*p是一個表示式,含義是「對指標變數p進行解引用操作」,這與表示式&a的含義「取整形變數a的地址」是正好是相反的操作。

9樓:阿凡達

p=&a 是對a的引用。p->a是指標p下的內容。對a的引用是對a起別名,對p進行操作就是對a的操作。

p->a的話,就是指標p指向的儲存單元的a。這個你對p操作的話就不會改變a。和前一個是不一樣的!

10樓:匿名使用者

在用的時候完全可以混用

這是在搞笑嗎

11樓:季成佟橋

你說的復*(p++)h和*p++是等價的

但是這裡制的++是先用在加所以結果都是10要是程式是這樣的

#include

void

main()

,*p;

p=a;

printf("%d\n",*(p++));

printf("%d\n",*(p++));

p=a;

printf("%d\n",*p++);

printf("%d\n",*p++);

}結果就會變成11了

希望採納

*p=&a 是什麼含義,誰是指標變數,*p還是p

12樓:清_晨

int a = 1;

int *p = &a; p是指標變數 ,p指向a; (注:此時*p表示p指向a的值,即*p 和 a 值是一樣的)

//當然也可以通過p改變a的值

*p = 3; //此時a也等於3

13樓:

int a,*p=&a;

//這個語句定義兩個變數,一個是整型變數a,另一個是指標變數p,其指向a,或者說變數p中儲存a這個儲存單元的地址。

*p=5; //這個語句表示給p所指單元賦值,相當於a=5。

c語言中*p=a與*p=&a有什麼區別

14樓:清鵬之

讓我來綜合一下吧

在定義的時候

int *p=&a; 是等同於 int=*p;   p=&a;的。該形式只在定義的時候是正確的。就是指標p所指向地址的內容為a的內容。

如果不是定義的時候

*p=&a; 就是它字元的那個意思,就是指標p所指向地址的內容為a的地址。

dev c++試了下

————————————————————————————————————

「*p」表示地址為p儲存單元的內容;「p」表示地址;「&a」表示取a的地址;a為變數。

int *p;//初始化指標,但是該指標無指向地址!如果直接使用會有問題。

int *p=&a;//初始化指標,該形式只在定義時正確,表示以p指標所指向地址的值為變數a的值。

p=&a;//表示指標p所指向的地址就是a的地址。即地址間的賦值。

*p=a;//表示指標p所指向地址的內容就是內容a。

在c中,指標一定要初始化,指標加1指的是增加一個儲存單元。對陣列而言,這意味著把加1後的地址是下一個元素的地址,而不是下一個位元組的地址,這是為什麼必須宣告指標所指向物件型別的原因之一。

15樓:匿名使用者

首先來說一下*和&,為了便於理解你可以認為,這裡*是取內容,&是取地址。

我不討論它們的區別,因為*p=&a這個形式一般是錯的,常用的是p=&a。

下面比較*p=a和p=&a。看圖,圖很詳細。

顯然它們是等價的。

然後比較*p=&a和p=&a;

則這兩種都是對指標變數的賦值,賦值有兩種形式

①先定義後賦值

int a=3,*p;(定義指標變數*p)

p=&a;(對指標變數取地址)

②定義變數的同時賦值

int a=3,*p=&a

也就是說在賦值時,

int *p=&a

相當於int *p,

p=&a

它們的區別其實就是

int *p=&a是同時定義*p並對賦值p(即a的地址賦給p),而p=&a,只是對p賦值,沒有定義指標變數。

但要注意,只有在同時定義賦值時「*p=&a」這種寫法才是對的

其他情況下不要用*p=&a,這種形式,因為根本就不對,如下圖。我之前一直的疑問是為什麼賦值時*p=&a就不算錯了?後來老師給的解釋是這種形式只有在上面那種情況下成立,其他的情況確實都是錯的。

16樓:沉睡的羅羅塔

*p=&a;是將a的地址賦值給*p,結果會是一個十六進位制的數。 第二個是讓p指向a的地址空間。*p的傎和a相等。

int a=2,*p; *p=&a; 列印*p應該是一個地址值,很長一串, p=&a; 打*p印結果會是2;

對於指標來說,

*p = a[0],表示向地址為p的記憶體區域賦值為a[0]。

p = a[0],把變數p的值改為a[0],這個語句正常應用中是錯誤的。變數p的值為記憶體地址,這樣賦值會丟掉p原來指向的記憶體。

17樓:幻想祕境

*p=a是將a的值給p指標指向的地址的值

*p=&a是將a的地址給p指標指向的地址的值

c語言中,定義int型變數a指標*p,那麼,*p=&a和p=&a是什麼區別?

18樓:匿名使用者

只能int *p=&a或者int *p;p=&a;

19樓:匿名使用者

定義int型別變數a和指標*p,則指標p存的是一個int型變數的地址,即可以表達為:p = &a;

*p存的是int型變數的指,即p指標指向地址的內容,所以可*p = a; 當你用*p = &a時,編譯器會認為指標的值表示了地址,編譯報錯。如果你真想這樣表示,也可以,只需要將地址強轉為int型,即

*p = (int)&a;

20樓:天河宙

你要先int *p然後才能p=&a

21樓:匿名使用者

p是地址 &a是地址,*p是p地址對應的值

22樓:白花戀歌

去看 c和指標 這本書,有非常詳細的關於指標的幾乎所有的問題,&a表示取變數a的地址,根據宣告,*p表示訪問指標所得到的整形變數,一般情況下地址不能賦值給整形變數,如果非要這麼做,只能使用強制型別轉換

23樓:匿名使用者

*p 是錯的。。。。

c語言中函式名就是指標嗎,c語言中函式名就是一個指標嗎

是的。函式 指標就是函式的指標,它是一個指標,指向一個函式。這正如用指標變數可指向整型變數 字元型 陣列一樣,這裡是指向函式。例 a char fun1 char p1,char p2 b char fun2 char p1,char p2 表示式相比,唯一不同的就是函式的返回值型別為char 是個...

C語言中,指標變數該如何使用呢,C語言中指標和指標變數的區別是什麼

int integer 0 為求來 地址運算子,指標用來儲存 源一些變數的bai地址 可以這樣訪du問 pinteger 得到 pinteger這個整形指標裡面的值 zhi0 建議看dao 相關的書,難懂的東西才有意義 所謂指標其實就是用來儲存地址的 就這樣想就好了 比如 int a,p p a 就...

c語言中,指標變數為何只佔節c語言中,指標變數為何只佔4位元組?

首先要明白的是,指標變數是用來存地址的變數,也就是說,這個變數裡面存的內容是地址。那麼開始解釋,cpu與記憶體進行直接互動時,cpu要獲得記憶體中的資料,就要知道這個資料在記憶體中所在的地址,那麼cpu就要在記憶體中定址。記憶體中的地址的基本單位為位元組,即一個位元組一個地址,32位cpu有32根地...