c語言中p是什麼意思,C語言中 p 是什麼意思

2021-04-18 03:49:48 字數 5854 閱讀 6324

1樓:擁雲莊主

*p=*p(),首先,它是乙個

陣列,陣列裡面儲存的是指標

(*p)則不同,首先它是版乙個指標,然後權,它指向乙個陣列,但通常,再定義的時候需要指定所指向陣列的大小。

示例:#include

int main(int argc, char *argv);//char指標陣列,兩個元素,分別指向hello和worldprintf("%s\n%s\n",p[0],p[1]);//分別輸出兩個元素

char (*p2)[10]=&a;//指向陣列的指標,所指向的陣列有10個char元素

printf("%s\n",p2);

return 0;}

2樓:匿名使用者

[ ]是變址運算子,p[ ]即計算p的位址並找出此位址單元中的值。如果此位址單元裡存放的是另乙個單元的位址,就可以用指標運算子來找出該單元的值。

3樓:匿名使用者

1、這是乙個指標陣列。在c語言和c++語言中,陣列元素全為指標的陣列稱為指標陣列。一專維指標陣列的定義形式為屬:

「型別名 *陣列識別符號[陣列長度]」。例如,乙個一維指標陣列的定義:int *ptr_array[10]。

2、指標陣列和陣列指標的區別:陣列指標是指向陣列首元素的位址的指標,其本質為指標(這個指標存放的是陣列首位址的位址,相當於2級指標,這個指標不可移動); 指標陣列是陣列元素為指標的陣列,其本質為陣列。例如:

*p[2]是指標陣列,實質是乙個陣列,裡面的兩個元素都是指標 的優先順序比*的優先順序高,p先與結合,形成陣列p[2],有兩個元素的陣列,再與*結合,表示此陣列是指標型別的,每個陣列元素相當於乙個指標變數。

4樓:匿名使用者

p是一維陣列,p是二維陣列

*p 是一維陣列引數,*p是二位陣列引數,

5樓:匿名使用者

你的疑問來

恐怕是出在二維陣列源裡吧

例如:int a[3][5],*p;

p=a;

上面的第bai一行表示定義乙個du指標變數p,下面zhi一行表示p指向dao陣列a的首行

a+1表示下一行首位址

*p等價於*(p+0)等價於p[0] 表示p[0]行首位址p[0]+1表示p[0][1]的位址 p[0]+2表示p[0][2]的位址

而*(p[0]+2)表示p[0][2]這個元素的值

6樓:匿名使用者

指標陣列,就是你一次定義了很多指標

7樓:雖有如無

*p[ ]=**p=p

c語言中*p=&a是什麼意思

8樓:

假設我們定義乙個指標p。

那麼會經常使用到三個符號:

1,p;

2,*p;

3,&p;

初學者經常會感到很迷茫,到底這三個符號表示什麼?

我們知道,p是乙個指標變數的名字,表示此指標變數指向的記憶體位址,如果使用%p來輸出的話,它將是乙個16進製制數。而*p表示此指標指向的記憶體位址中存放的內容,一般是乙個和指標型別一致的變數或者常量。

而我們知道,&是取位址運算子,&p就是取指標p的位址。等會,怎麼又來了個位址,它到底和p有什麼區別?

區別在於,指標p同時也是個變數,既然是變數,編譯器肯定要為其分配記憶體位址,就像程式中定義了乙個int型的變數i,編譯器要為其分配一塊記憶體空間一樣。而&p就表示編譯器為變數p分配的記憶體位址,而因為p是乙個指標變數,這種特殊的身份注定了它要指向另外乙個記憶體位址,程式設計師按照程式的需要讓它指向乙個記憶體位址,這個它指向的記憶體位址就用p表示。而且,p指向的位址中的內容就用*p表示。

我來舉個例子說明這三個符號到底表示什麼。

假設有乙個樓盤的銷售員,當然,現在時髦的叫法是「銷售代表」之類的,我們用字母x表示他。他負責銷售乙個樓盤中的某套房子,此房子有乙個位址為a,而他本身也需要有地方住,他居住的房子的位址為b。而這個幸運的銷售員很快的賣掉了這套房子給c。

現在公司要求對銷售的房子必須包產到戶,也就是說,現在必須提到x的時候能夠管理到c。

如果用程式表示上述內容的話就可以使用指標。首先定義乙個指標p,讓他指向位址a,位址a中住的是c,而x本來居住的地方的位址是b。ok,現在能知道p,*p,&p表示什麼了嗎?

沒錯,p表示此指標指向的位址,就是a,而*p表示此位址中居住的人,就是c,而&p表示這個銷售員居住的位址,就是b。

9樓:志遠

一樓說的不對

第乙個表示p是乙個指向指標的指標. *p取得p指向的指標,&a的位址賦予該指標.

第二個表示p是乙個指標,&a的位址賦予p

10樓:匿名使用者

這個表示式我分成兩部分分析:

左值  *p

解引用運算子(*)的作用是將乙個指標解引用,也就是獲取指標指向記憶體位址的內容。而這裡作為左值,就是將右值&a的內容賦予指標所指向的記憶體空間。

2.  右值  &a

取位址運算子(&)作用剛好和解引用相反,是獲得乙個變數(不能是常量或暫存器變數或函式)的位址。這裡就是說取a變數的位址。

綜上,這句賦值表示式的意義為

將a變數的位址賦予p指標所指向的記憶體空間,也就是說**p 的值和 a相同

11樓:鼎湖暗火

*p=&a 是將a的位址賦給p指向的變數p=&a 是將a的位址賦給p

但在變數定義語句中

int *p=&a;等價於int *p;p=&a;

12樓:匿名使用者

語句*p=&a是指把變數a的位址賦給指標變數p所已指向的某個指標變數,說明p是乙個指向指標變數的指標變數;語句p=&a是指把a的位址賦給指標變數p,說明p是乙個基型別為變數a這種型別的指標變數。

13樓:匿名使用者

記得不太清楚了

好像是: 上面是說p指標 指向a的位址 也就是說 *p就是a的值

而下面乙個就是 指 a的位址 不能獲得a的值

14樓:匿名使用者

第乙個是p指標的內容是a的位址

第二個是p指標的內容是a的內容

15樓:匿名使用者

*p=&a是把a的值賦給p,p=&a是把a的位址賦給p。

16樓:經寧機湛藍

1、在宣告語句中int

a;int*p=

a;//

宣告p為整

形指標變數,並指向變數a的儲存位址。 2、在執行語句中inta=2,b=

3,*p;*p=b;

//p指向的位址單元存入b的是值3......................*p=a;

//p指向的位址單元存入a的是z值2 通過以上兩個例子可以看出,*p=a在宣告語句中和執行語句中的含義是不同的。

c語言中(*p)和*(*p)的含義是什麼?

17樓:匿名使用者

你的疑問恐怕是出在二維陣列裡吧

例如:int a[3][5],*p;

p=a;

上面的第一行表示定義乙個指標變數p,下面一行表示p指向陣列a的首行a+1表示下一行首位址

*p等價於*(p+0)等價於p[0] 表示p[0]行首位址p[0]+1表示p[0][1]的位址 p[0]+2表示p[0][2]的位址

而*(p[0]+2)表示p[0][2]這個元素的值

18樓:栁児

*操作符,就是操作其後表示式所在位址的值,可以讀,也可以寫*還可以作為乘法運算子

*還可以用來宣告指標變數

這個要看具體情況

int a=6;

int *p=&a; //這裡的*p只是定義p為指標的意思//*p 其實就相當於a

printf("%d", *p);//輸出6*p=5; //結果是a也等於5int (*p)(int a, int b); //這裡的*p也只是定義p為指標

int *(*p) (int a,int b);//這裡只是定義了p為函式指標

int a;

int b;

int *q=&a;

int **p=&q;

*p = &b; //結果就是q=&b;

*(*p) = 5//結果就是b=5;

19樓:匿名使用者

(*p) == p所指向的那個位址的值

*(*p) == p所指向的那個位址的值所對應的位址的值假設 p 指向的那個位址 0x0001, *p = 1000那麼 *(*p) 就是 0x1000 那個位址對應的值

20樓:匿名使用者

*p是乙個指標.

指標就是用來存放位址變數的東西.

乙個'*'是指標,兩個*是指向指標的指標

21樓:但

解答的有錯誤!p[0]+k是指在p[0]指向的位址存的值的基礎上增加了k。比如,int a[10]={10,2},*p;

p=a;

那麼p[0]+6的值是16。

c語言中*p=a是什麼意思?

22樓:匿名使用者

c語言中*p=a是指標變數賦值語句,這種寫法有兩種可能意思:

指標變數定義時的初始化賦值

int a[10];

int *p=a ; //這時的a是個位址,如:陣列名或指標變數,表示定義指標變數p,同時,p指向位址a。 這裡的*是跟隨int的,用來表示p變數是int *型別。

指標變數定義後,給指標變數所指記憶體中的資料賦值int a=10, x;

int *p ;

p=&x ; //p指向變數x的位址

*p=a ; //這表示向p所指向的位址中儲存乙個資料a,a是個整型資料。p是x的地位址,*p就是x,本句相當於x=a ;

這裡的*是指標變數引用操作運算子,表示引用指標中的資料注意:p=&x ;  很重要,指標變數必須要指向乙個明確的位址,然後才能*操作,否則,未指定位址的指標變數被稱為野指標,引用野指標會造成程式執行異常。

23樓:惑

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

我不討論它們的區別,因為*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就不算錯了?後來老師給的解釋是這種形式只有在上面那種情況下成立,其他的情況確實都是錯的。

24樓:匿名使用者

1、在宣告語句中int a;int *p = a; // 宣告p為整形指標變數,並指向變數a的儲存位址。 2、在執行語句中int a = 2,b = 3, *p;*p = b; // p指向的位址單元存入b的是值3......................*p = a; // p指向的位址單元存入a的是z值2 通過以上兩個例子可以看出,*p = a在宣告語句中和執行語句中的含義是不同的。

c語言中cabcab是什麼意思,C語言中cabca,b是什麼意思

max 是個函式,表示取其中最大的值。比如a 3,b 4,則max a,b 4 a 4,b 3,則max a,b 4 a 3,b 3,則max a,b 3 c語言中c abc a,b 是什麼意思 這是乙個函式呼叫的語句,c等於abc函式的返回值。一般這麼寫abc是乙個函式,也就是存在 fun typ...

c語言中是什麼意思,C語言中 是什麼意思?

你好,a b表示a a b a b表示a a b 是c語言的運算子部分的知識 其中 是結構體指標的知識 條件運算子 a?b c表示a為真則執行b,否則執行c 運算子的知識,叫自反賦值運算子 a b相當於a a b a b相當於a b 是指向成員運算子 不懂可以問我 c語言中輸出語句中用到 c,表示輸...

c語言中o是什麼意思,C語言中 c是什麼意思

o意思是以八進位制整bai型式輸出整du數。c語言zhi中對於不同型別的資料用dao不同的格式字元內。x格式符,以十六進製制數容形式輸出整數。u格式符,用來輸出unsigned型資料,即無符號數,以十進位制形式輸出。c格式符,用來輸出乙個字元。s格式符,用來輸出乙個字串。擴充套件資料 scanfse...