c語言printfp1dnp1後面是什

時間 2021-09-08 13:40:09

1樓:風若遠去何人留

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

這是乙個輸出函式,缺省會列印在輸出終端上,即執行的dos視窗。

引數為"**(p+1) %d\n",**(p+1),所以printf會先列印字串"**(p+1) ",

然後根據格式字元%d, 將**(p+1)的值以整型形式列印出其值。

最終輸出換行符'\n'。

這裡的**(p+1),列印為整型,說明p為int **型,而**(p+1)就是p上偏移乙個int*型別空間後,取出其指向的值,並在這個值的位址上取出乙個整型值。這個值就是最終值。等效於

陣列形式p[1][0]。

2樓:樂正涵柳

#include

void main()

;int b;

p=&a;

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

printf("a[4] %d\n",a[4]);//給你加了一行}a只有4個元素,a[4]是陣列a第4個元素後邊四位(int型是4位)的值。你會發現這兩個列印的值是一致的。

這是因為p指向的是乙個有4個元素的int型陣列的位址,那麼它本身加1就表示偏移4個int型的位置。而p本身是指向a的首位址的。這個時候偏移4個位置,就到了a最後乙個陣列元素後邊的位置。

在實際應用中,這是不允許的,因為你越界了。a[4]取出來的值(也就是**(p+1) 的值)是不確定的。每次執行獲取都有不同的值。

不同平台也有不同的值。這是很危險的。

3樓:匿名使用者

這越界了 *(p+1)相當於指向a[2][0]但是a[2][0]並不存在

*(*(p+0)+1)就輸出了 a[1] 這個理解了你就懂

4樓:匿名使用者

後面是要在%d位置要對應顯示的資料

5樓:匿名使用者

**p相當於*(*(p+0)+0),如果列印**p結果是11,

**(p+1)相當於*(*(p+1)+0),指向的值已經不再陣列內了!

6樓:匿名使用者

輸出的是乙個隨機數啦

表示的是乙個陣列指標

c語言中------printf("%d\n" *(p++));前面的語句省略,那麼這個*(p++)是什麼意思啊?

7樓:

給你個例子:

取當前指標的字元,然後p指標在跳一位元組,比如說 p="abc";

*(p++) 取 'a' 然後p 指標指向 "bc"

8樓:匿名使用者

*(p++) 的意思就是 (p++) 是位址加1 但是因為++在後面 所以是先取值 位址再加以

,比如說 p="abc" printf("%d\n" *(p++)); 輸出是a 因為是 %d 輸出應該是104 位址指向 b

如果你再來乙個 printf("%d\n" *(p++)); 這個時候位址++ , 輸出 b

c語言的題目高手幫忙解釋下 printf ("%d\n",p);printf ("%d\n",p+9);

9樓:匿名使用者

顯然不可能是選d,輸出的是十進位制數

應該是選a

194+2*9==212

10樓:sunny丶輝輝

我們計算機自己執行這道題的時候乙個int型是4個位元組,所以移動9位是36位元組。本題的int應該是兩個位元組,所以移動9位是18位元組。

十進位制的18換算成16進製制是0x12,加上194就是0x194+0x12=0x1a6

11樓:匿名使用者

這玩意列印的是指標,a是個int型的陣列,他這裡說int佔2個位元組,那p+9就是往右走了18個位元組,當然這個194是十六進製制顯示的,你加個18看看等於幾。

12樓:w菜鴿

輸出的都是指標的值。

p+9,由於p是int型指標,int佔兩個位元組,p+9的值比p的值多2*9=18

正解應是 a 212

由於題目已經說了int為2位元組,你除錯的機器上int是4位元組,所以會差36

13樓:匿名使用者

tubor c中int為2個位元組,現在很多c環境中int為4位元組,比如vc++6.0

在c語言的指標運算中*(p+1)與p+1有什麼區別 p是指標

14樓:匿名使用者

一、bai

指代不同

1、*(p+1):表示du具體的數值

。zhi

2、p+1:表示記憶體位址dao。

二、指向的

值不同版

1、*(p+1):指標p所指權向的記憶體位址單元的下乙個記憶體位址單元中的值。

2、p+1:指標p所指向的記憶體位址的下乙個記憶體位址。

三、記憶體表示不同

1、*(p+1):*的優先順序比+的優先順序高,所以*p+1在編譯器中是先取出p指向的int值然後加1。

2、p+1:直接將記憶體中指向的位址加1,就是將要指向的位址。

15樓:天雲一號

*(p+1)表示具體的數值,指標p所指

向的記憶體位址單元的下乙個記憶體位址單

元中的值;

p+1 表示地內址,指標容p所指向的記憶體位址的下乙個記憶體位址。

可以通過下面的例項來理解*(p+1)與p+1之間的區別:

int *p;  // 定義乙個int型別的指標pint a[3]=; // 定義乙個int型別的陣列a,並進行初始化p = a;  // 使指標p指向陣列a的首位址printf("%d", *(p+1));  // 輸出2,等價於a[1]

printf("%x", p+1);     // 以16進製制形式輸出a[1]的位址(如08ff12),等價於&a[1](&為取位址運算子)

16樓:天河

p+1是指p指標加1即p的下乙個指標,*(p+1)是指p+1所指向的物件

17樓:h資

舉個例子吧 比如a[5]=;*(p+1)指的是a[1]即4,而*p+1指a[o]加1即3

18樓:匿名使用者

當然有區別 指向指標的指標*(p+1) p+1就p的下乙個指標

c語言中如(*p)[3]如果出現這*(*(p+i)+j)兩個*是什麼意思啊,求解啊

19樓:

p為指向3個元素的一維陣列的指標

p+i表示第i個包含3個元素的一維陣列的首位址*(p+i),對p+i解引用,得到p+i的內容,為一維陣列p+i的首元素的首位址

*(p+i)+j,一維陣列p+i的第j個元素的位址*(*(p+i)+j),一維陣列p+i的第j個元素的內容如果p指向乙個二維陣列a[i][j],那麼*(*(p+i)+j)等價於a[i][j]

20樓:

//舉例說明。

int a[2][3]=;

int (*p)[3]=a; //p的型別與a相同,這兒表示p指向陣列第一行。

printf("%d\n",*(*(p+1)+1)); //*(*(p+1)+1)等價於a[1][1],這兒的值為5。

21樓:匿名使用者

我們這樣來看

int arr[3] 這是乙個大小為3的整型陣列那麼int (*p)[3] 這就是乙個指向上述陣列的指標所以p+i也是乙個指向上述陣列的指標,即 *(p+i) 和上述陣列是同型別的

那麼 *(p+i)+ j 你就可以看成是 arr + j 了,就是指向上述陣列第j個位子的指標,接著就是*號取值了

c程式語言中printf(「%d\n」,(a=a+1,a+6,b+2))的意思

22樓:匿名使用者

printf(「%d\n」,(a=a+1,a+6,b+2));

,號運算子,輸出最後乙個表示式即b+2的值即可

23樓:匿名使用者

printf(「%d\n」,(a=a+1,a+6,b+2))

這個是取逗號最後乙個值的

24樓:匿名使用者

這樣寫法有的時候有意想不到的用處

例如x=(a=a+1,b=b+1,a+b);

這樣就等價於 x= a+b ; 前面計算出 a b的值

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

珈藍惜夢 1 為轉義字元,代表的意思是 標題開始 在c語言中,所有的ascii碼都可以用 加數字 一般是8進位制數字 來表示。而c中定義了一些字母前加 來表示常見的那些不能顯示的ascii字元,如 0,t,n等,就稱為轉義字元,因為後面的字元,都不是它本來的ascii字元意思了。轉義字元是很多程式語...

c語言x x 1 是什麼意思,C語言裡X 1是什麼意思

樓上正確,但是說的太複雜。其實實際結果就是變數x的最後一位 二進位制的個位 其它二進位制位都是0的乙個整數。 逢淑英毛戊 從命令的角度講,是將x的每一bit 2進製中的1和0都佔乙個bit 與0001的每一bit做與運算.是 與運算 的意思,1 1 1,其他情況 1 0,0 1,0 0 都 0.從邏...

關於C語言a 1和a i 1的區別

a i 1取得a陣列的下標為i的元素的值,然後再減去1 a i 1 取得a陣列下標為i 1的元素的值 a i 1表示陣列a下標為i元素與1的差值 a i 1 表示陣列a下標為i 1元素的值 i 和i 的區別 1 運算方式 i 屬於自增運算,相當於i i 1 i 屬於自減運算,相當於i i 1 2 值...