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 值...