C語言指標P1表示陣列A1指標的指標求解釋

2021-03-03 21:56:08 字數 4649 閱讀 3842

1樓:

你的定義應該大概是這樣吧,舉個例子:

a[3][3]=;

int **p=a;

所以*p就相當於&a[0][0]; 畫了一幅內圖,你可以看一下

**指標

容是一個雙重指標,是指向指標的指標

2樓:奮鬥拼搏的小牛

c中指標bai是指標,陣列是陣列,兩個du

沒有必然聯絡。zhi*(*(a+i)+j) 等價於daoa[i][j] 說法不準確,應是*(*(a+i)+j) 的值=a[i][j] 的值。回指標可以++(如++p),答但你一定沒有見過++a(a是陣列名)

3樓:匿名使用者

首先對於二級指標而言,*p表示表示首地址,*p+1表示第二個元素的地址,所以*(*p+1)就表示

指標的指標

4樓:匿名使用者

*p是指向第一行的指標,*p+1就是第一行第二列的元素的地址,*(*p+1)就是取得第一行第二列的元素即a[0][1]

5樓:匿名使用者

你先看看指標和陣列的關係,以及二級指標以後,再來求解釋

c語言對於陣列a[1,3,5,7]*p+1和*(p+1)的區別

6樓:

假設p = a;

則*p = a[ 0 ] = 1

*p + 1 = a[ 0 ] + 1 = 2;

p + 1 = &a[ 1 ] //這裡的 p + 1 是指標p的指向往後挪了一位

因此 *(p + 1) = a[ 1 ] = 3

7樓:拜月

對於任意一個陣列,

*p+1= *p指向的變數值 + 1

*(p + 1)= *p後移一次指向的新的變數值。

8樓:匿名使用者

a[1,2,5,7]

p=a;

*p +1 ==> *p 即指標p的內容, 是1, 再=1, 結果是2

*(p+1) ==》指標p下移一個位置的內容, 即3

c語言 *p=&a[0][0] 這是什麼意思啊? 如果後面還有*p+1;呢

9樓:匿名使用者

p是個指標,指向的地方被賦值為a[0][0]的地址,所以p應該是個二維指標例如

int * q;//相當於&a[0][0]int** p=&q ;

*p=q;

後面的*p+1值就是&a[0][1]

10樓:洛雨

就是把p指向a[0][0]的地址,*p+1,根據優先順序,其實是(*p)+1,相當於a[0][0]+1

在c語言中*(*p+1)表示什麼意思

11樓:北京泗洪人

p是個指標的指標。

*p, 是指標p裡面的內容,它本身也是個指標*p+1,指向*p的下一個地址

*(*p + 1):*p的下一個地址裡面的內容

c語言 *p 和p的區別?

12樓:楓璽

c語言中,*p 和p都常用在指標當中表示一個指標變數,*p 和p的區別:

1、表示的含義不同

*p表示此指標指向的記憶體地址中存放的內容。

p表示一個指標變數的名字,指此指標變數所指向的記憶體地址。

2、輸出的格式不同

*p一般是一個和指標型別一致的變數或者常量。

p輸出的是一個16進位制數, 輸出一個指標的地址。

3、功能不同

*p是讓程式去那個地址取出資料。

p存放的是地址。

例子:1、int a[5]=;

int *p=a;//這是在定義指標變數p的同時就直接給它初始化,即把陣列a的首地址賦給它。

2、int a[5]=;

int *p;//宣告指標變數p

p = a;

擴充套件資料

(*p)操作是這樣一種運算,返回p 的值作為地址的那個空間的取值。(&p)則是這樣一種運算,返回當時宣告p 時開闢的地址。可以用賦值語句對記憶體地址賦值。

例:int *p;

p=2003h;

*p=3000h

結果:**p=*(*(p))=*(*(2003h))=*(3000h)=3000h。

&&p=&(&(p))=&(3001h),此時出錯了,3001h 是個常數無法存放地址。

*&p=*(&(p))=*(3001h)=2003h,也就是*&p=p。

13樓:ieio啊

兩者之間的區別如下:

1、表示的意義不同。

p是一個指標變數的名字,表示此指標變數指向的記憶體地址,而*p表示此指標指向的記憶體地址中存放的內容。

2、數量形式不同。

p如果使用%p來輸出的話,它將是一個16進位制數。*p一般是一個和指標型別一致的變數或者常量。

3、定義不同。

p存放的是地址,而*p是讓程式去那個地址取出資料。

例子:#include

void main()

輸出結果為:3,3,4;

解釋:*p++:是先取出*p的值,再使p加1

//p是個指標,給p加1,相當於讓p指向了x所在地址的下一個位置,而對於x則是沒有任何影響

(*p)++:是使*p的值加1.

//*p則是p指向的位置對應的值,題目中是*q,所以此時的*q就是x的值,為3,當輸出*q之後,再給*q即x自加1,綜上所述,x就會變為4

14樓:匿名使用者

先要理解地址和資料,你可以想象有很多盒子,每個盒子有對應的號碼,那個號碼叫做「地址」,而盒子裡放的東西叫做「資料」。

上面就段理解了,*p和p的區別就不難解釋了。

p是指標變數,用來存放地址,你可以認為是上面所說的盒子的號碼,「*」是解引用操作符,你可以把它理解成開啟盒子,*p就是開啟p號盒子,取出裡面的資料。

簡單來說,你記住,p存放的是地址,而*p是讓程式去那個地址取出資料。

15樓:雲南新華電腦學校

一、表示的東西不同

*p表示p代表相應資料型別在儲存

單元中儲存的首地址,而這個儲存單元儲存的是相應型別資料的數值。

**p表示p也表示地址,簡單的說,這個地址對應的儲存單元儲存的數也是一個地址,而不是數值,而這個被儲存的地址對應的儲存單元儲存的資料才是真正的相應型別的數值。

16樓:匿名使用者

借用一樓的回答,列印的時候,你可以參照下述列印,可能你就明白了。

int x = 3;

int *p, *q;

p = &x, q = &x;

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

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

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

printf("-----\n");

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

printf("%d\n", x);

你列印的結果應該是:

p=某地址,p=3

q=**=某地址+4/8(根據系統位數是4或者8),p=隨機值-----

q=3q=4

17樓:匿名使用者

char *p其實也可寫成char* p

char*表示指向char型別的指標

這時p就是指標,*p是指向的char變數

祝學習進步!

等你熟練使用指標的時候,一切都是指標,連陣列和函式,都變成了指標。之所以使用指標是因為,很多情況下,編譯和執行內部,都採用轉化成指標的方式,所以使用指標可以優化程式

指標的使用沒有要求,也沒有限制,隨個人對指標掌握的程度。

常見的如,對字串的操作,傳值呼叫,陣列,函式,等等。

18樓:匿名使用者

在你家裡有一部**p,你要給中國銀行打**怎麼辦?你就使用**的記憶功能找出中國銀行的**號碼p,這個號碼是指向中國銀行的。我們就能通過這個**號碼訪問中國銀行*p(*p表示中國銀行提供的功能)

號碼儲存在p中,*p是通過**號碼訪問到中國銀行這個值

還有一點。你家**總有一個地方擺放吧,也就是說你加**p也是有一個地址的這個地址就是」你家"也就是&p

19樓:匿名使用者

void ergod(void (*doit)(int))}void printa(int a)

void printb(int a)

int main()

這是一個函式指標的應用

執行時根據你傳的不同的函式指標而執行的不同的操作列印出b:0

b:1b:2

b:3b:4

b:5b:6

b:7b:8b:9

20樓:民大幽靈

第一個:p為帶回一個指標的函式,該指標指向double型資料,第二個:p是指向函式的指標,該函式返回double型值

21樓:傲世修羅王

這種只有你慢慢去理解,時間長了就懂了,別指望一下就懂了

22樓:惡魔王子

p是指一個變數,它代表一個數值,*p則代表一個地址

c語言中關於指向陣列的指標C語言中關於指向陣列的指標

char str 100 char pi str 相當於char pi pi str char ppi pi 這個地方抄錯了。應為char ppi pi 定義加 表明這是指標型別的變數 用的時候,就是用的指標,加 幹什麼。只有取指標所指變數的值,或給指標所指的變數賦值的等涉及指標所指的變數的時候,才...

c語言符指標和字元陣列的區別c語言字元指標和字元陣列的區別

首先第一點,非常重要的一點 指標和陣列是不同的兩個型別!我們從可以從c語言標準文件中得知 iso iec 9899 1999 programing language c 6.2.5 types 20 這說明了什麼是陣列型別 同樣在20 說明了什麼是指標型別。在瞭解了兩種型別的基礎上,我們瞭解陣列和指...

C語言中「指標變數P自增1」是什麼意思

自增就是 1的意思,地址 1就是指向下一個元素。例如int array 3 int p array 此時p指向array 0 p 這裡的p自增,執行後p指向array 1 計算機c語言中 指標變數p自增1 什麼意思 自增就是 1的意思,地址 1就是指向下一個元素。例如int array 3 int ...