snrg.net
當前位置:首頁 >> int A=2,*p=&A,*q=&A; printF("%D %D\n&... >>

int A=2,*p=&A,*q=&A; printF("%D %D\n&...

*p++是指先返回*p的數值然后將p++,此時p的值已經不是a的指針了.所以說printf("%d %d\n",*p++,*(q++));會輸出:2 2但是p和q的值都變了,int 是4字節,如果a的指針是0x22ff44,那么p和q都是0x22ff48這個:printf("%d %d\n",*p,(*q)++);會輸出: 3 2因為:printf函數是從左往右讀取,然后將先讀取放到棧底,最后讀取的放在棧頂,處理時候是從棧頂開始的,所以(*q)++先執行,返回2,但是指針指向的值變成了3.這樣p就指向了3

printf是從右向左運算 a不改變

*p++:*的優先級高,可以看成(*p)++,把a的值加1*(q++):q指針地址加1,就不指向a了

int a=2,*p=&a; //首先a=2,然后將a的地址也就是2的地址付給pprintf("%d",*p++); //由于是后++所以打印的是*p也就是2,輸出結果為2

個人理解: 因為printf ("%d%d", (*p) ++,*p;) //相當于也是過程級的(方法),方法的變量以及引用是放在棧中的,所當(*p) ++完時,*p重新入棧. //也就是內存當中有兩個變量.---------- 按書本就是: i++;先賦值再自加,所以只有等輸出完了,再自加.

您好,指針的意思就是存放地址的寄存器,所謂寄存器里面的內容就是32/64位的一組數.只不過是代表地址.那么看您的程序,您定義了int *r=5;那么這句就是說您定義了一個寄存器名叫r,由于存放地址.而且這個地址是5;之后您試圖打印

是22

int &y = a; 這是錯的;往下的我也不看了,就告訴你一句,這種東西不用看,看了也沒有用,就是些人拿著懂了c語言的某些偏的東西在弄,這樣有意思嗎

答案是-3 這里注意- 和 ++的優先級 再次 要注意 a++和++a 的區別 a++是 運行完之后 +1 即如上題 輸出-3++a 是 當前+1 如果是 printf(“%d”,-(++a)) 則輸出的結果是-4 這個題目主要的點還是在于 a前++ 即(++a) 還是 a后++ 即(a++)

%%本身就是轉義字符 代表% 于是 不會輸出a b值 而是輸出 a=%d,b=%d

相關文檔
網站首頁 | 網站地圖
All rights reserved Powered by www.833343.live
copyright ©right 2010-2021。
內容來自網絡,如有侵犯請聯系客服。[email protected]
河北快3遗漏统计 精准一头一尾中特料 新版幸运飞艇app官方 信誉棋牌下载 大圣捕鱼游戏 福建体彩36选7走势图 白小姐一码中特一肖中特 澳洲快乐8开奖查询 街机电玩城捕鱼手机 江西优乐抚州麻将 十二生肖牛