a 和 a的區別

2021-09-30 09:51:22 字數 644 閱讀 5271

void main()

;int *ptr=(int *)(&a+1);

printf("%d,%d",*(a+1),*(ptr-1));

}列印出來的值為多少呢?

對指標進行加 1 操作,得到的是下乙個元素的位址,而不是原有位址值直接加 1。所以,

乙個型別為 t 的指標的移動,以 sizeof(t) 為移動單位。 因此,對上題來說,a 是乙個一

維陣列,陣列中有 5 個元素; ptr 是乙個 int 型的指標。

&a + 1: 取陣列 a 的首位址,該位址的值加上 sizeof(a) 的值,即 &a + 5*sizeof(int),也

就是下乙個陣列的首位址,顯然當前指標已經越過了陣列的界限。

(int *)(&a+1): 則是把上一步計算出來的位址,強制轉換為 int * 型別,賦值給 ptr。

*(a+1): a,&a的值是一樣的,但意思不一樣,a 是陣列首元素的首位址,也就是 a[0]的

首位址,&a是陣列的首位址,a+1是陣列下一元素的首位址,即a[1]的首位址,&a+1是下一

個陣列的首位址。所以輸出 2

*(ptr-1): 因為 ptr 是指向 a[5],並且 ptr 是 int * 型別,所以 *(ptr-1) 是指向 a[4] ,

輸出 5。

mysql的 和 的區別 和 的區別

他們之間的區別用最直接的話來說就是 相當於對資料 加上 雙引號,相當於直接顯示資料。1 對傳入的引數視為字串,也就是它會預編譯select from user where name 比如我傳乙個csdn,那麼傳過來就是select from user where name csdn 2 將不會將傳入...

a和 a的區別

這道題目是我在面試的時候碰到的。當時面試官問我的時候,由於我什麼基礎都比較差,我聽到這個問題的時候整個人都傻了。我心想當時學c語言的時候,我只記得老師說這個都代表a陣列的首位址啊,這有什麼區別呢?這道題目,我最終沒有答出來,都怪我太菜了。今天這篇文章就當做是乙個記錄吧,也希望能給還不q清楚的同學一點...

and和or的區別

題目 求結果 a.1 or 2 b.1 and 2 c.1 2 2 d.1 2 2 結果 a 1 b 2 c 0 d 1 總結and和or的用法 and 從左到右,返回第乙個為假的表示式值,無假值則返回最後乙個表示式值。or 從左到右,返回第乙個為真的表示式值,無真值則返回最後乙個表示式值。備註 感...