1. 程式人生 > >c語言中取地址解析

c語言中取地址解析

定義:int a[2],*p =a;表示a[1]的地址有p+1,a+1,++p


我試了一下a++怎麼不行,查了之後說是


參考:http://blog.csdn.net/lyn_bigdream/article/details/8181850

還有逗號運算子的級別是最低的

例子:int a[2],x=2,y=5;

a[0]=(x+3,y++,x++);那麼最終結果是:a[0]=2 x=3 y=6;

為何a[0]=2:因為(x++)是運算之後再自加

a[1]=(x++,x+3,x+7);那麼最終結果是:a[1]=11 ,x=4

第一反應,我以為a[1]=10,就是3+7;其實是錯的。

計算a[0]的時候,x++了一次,此時x=3;計算a[1]的時候,又x++一次,此時x=4,因此a[1]=4+7=11

不信你改成a[1]=(x++,x+7,x+3);除錯一下,逗號表達試結果是7,就是4+3,說明經過一個逗號,x已經自加變成4了。