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根地...