C語言指標問題,請會C的進來指教

2021-05-04 18:27:58 字數 1113 閱讀 3692

1樓:

懸賞分:0 - 離問題結束還有 13 天 13 小時

#include "stdio.h"

#include "conio.h"

char *pp[2][3]=;

/*這條語句定義了一個pp[2][3]的陣列,陣列裡面存的是字元指標,說明陣列裡面的指標,是指向一個字串的第一個地址。

pp指向的是一個二維(2*3)的陣列,*pp則指向一個一維(3)陣列。這兩個和char *這條是沒有關係的,而是二維陣列的特性。

所以**pp是指向一個二組陣列的一個具體值,如上,這個值指向的是一個字元指標(字元陣列[0]地址)。再加一個*就是再解

了一個指標,所以***pp就是單個字元值。運用這個定義,解釋以下的具體輸出及原因。*/

main()

你看一下有沒有明白,會不會越看越暈。如果還不明白,再說明一下,*pp與pp[0]是等價的,想明白這個就應該都清楚了。

所以pp[0][0]與(*pp)[0]是等價的,注意括號。雖然*pp[0]和(*pp)[0]輸出是一樣的但不表示pp[0][i]與*pp[i]是等價的,

pp[0][i]只與(*pp)[i]是等價的。

2樓:皮皮魯的兔子

哇,二維的字元指標陣列,看到那麼多*號我已開始頭暈,恕我愛莫能助了

3樓:

這個有點麻煩,還要靠你多看看書,我給你解釋兩個吧,太多了首先定義了一個二維陣列,這個陣列裡放的全是指標,也就是指標陣列。

printf("%c\n",***(pp+1)); (pp+1)指向這個陣列的第1行,*(pp+1),是這個陣列的第一行的地址,**(pp+1)是這個陣列第一行,第一列的值,同樣也是一個指標,注意它指向的是一個字元陣列,對照此題這個字元陣列就是「mnopqr」在它前面再加一個*也就是***(pp+1),意思就是取這個字元陣列的第一個元素,對應的元素是m了

printf("%c\n",(*(*(pp+1)+1))[4]); *(pp+1)意思同上,然後*(pp+1)+1是指這個指標陣列的第2行第二列對應的元素,再在它前面加*意思還是和上面的一樣,最後取這個字元陣列「stuvw」的第五個元素w 輸出,

自己多看看書吧,書上都有的,我也是剛剛才看的,以前也不會

c語言的指標問題,C語言的指標問題

printf c p 3 分佈來看,c是要列印輸出一個字元。p指向那個字元陣列,p就是字元 a 那麼 a 3是多少呢,a 1是b 2 是c 3 是d注意是 p 3 而不是 p 3 這是由區別的。是的。p 3。是對p指向的那個值加3,p開始是指向a的,故a加3後就是d了 而p 執行3次的話,是指標p本...

c語言指標的賦值問題C語言指標的賦值問題

指標在用要注意初始化,例如 int p p為指標,地址是未知的,如果直接賦值 p a 這樣編譯可以通過,但是會產生警告,p的地址是隨機分配的,這樣對未知的地址賦值很危險,可能會覆蓋掉某些重要資料,所以避免這種危險,在定義指標時注意初始化,也就是賦值。可以int p a 或者int p p a 然後再...

C語言指標問題,求教大神C語言指標的問題搞不懂求大神指教

include include include include include static char chongpai char static int pare const void const void static int allocateintegerarr const char size ...