sizeof與陣列之間那點事

2021-08-09 01:30:33 字數 1057 閱讀 3723

今天做題看到很多sizeof(a)、sizeof(&a)、sizeof(&a+1)之類的題,一不小心就把人弄暈了,所以今天就好好把這些整理整理。

開始之前呢分享乙個小技巧——陣列名只有處於以下兩種情況時才代表整個陣列:①陣列名單獨在sizeof內時。②  &陣列名(如&a)

int a[ ] = ;

sizeof(a) =16                  陣列名單獨在sizeof內,表示整個陣列,乙個int型元素4個位元組,4*4=16。

sizeof(a+0) =4               此處陣列名不是單獨在sizeof內,那表示的就是首元素位址,+0,那還是首元素位址,存位址的指標變數大小是四個位元組。

sizeof(*a) =4                  此處 不是單獨在sizeof內,a代表首元素位址,*a就代表的是首元素——『1』,求首元素大小。

sizeof(a+1) =4               首元素位址加1,那就是第二個元素的位址,還是位址。

sizeof(a[1]) =4               a[1]陣列中的第乙個元素,整型資料4位元組。

sizeof(&a) =4                 此處&a就代表整個陣列的位址,但是  位址啊,放指標變數裡面的,所以還是4位元組。

sizeof(*&a) = 16            &a是a的位址,那*&a就代表整個陣列了,所以是16位元組。

sizeof(&a+1) =4             此處&a代表的是陣列a的位址(整個陣列),雖然陣列位址和陣列首元素位址的值是一樣的,但代表的意義完全不相同。這裡(&a+1),是向後移動16位元組(陣列a總大小),那麼(&a+1)代表的是陣列a尾元素後一位的那個元素位址。

sizeof(&a[0]) =4             這就不用說了,取第乙個元素位址

sizeof(&a[0]+1) = 4        嗯,第二個元素位址。

求整型陣列的還是比較簡單的,但要記住這些規則,畢竟後面複雜的多了去了,比如字元型陣列啊,字串啊,二維陣列啊,以及strlen對它們操作啊,這些都是面試官愛出的題。一定要弄清楚明白。

HTTP 和 HTTPS 之間的那點事

埠 http 的 url 由http 起始,且預設埠為 80 而 https 的 url 由https 起始,預設使用埠 443 安全性和資源消耗 http 協議直接執行在 tcp 之上,所有傳輸的內容都是明文,客戶端和伺服器端都無法驗證對方的身份。https 是執行在 ssl tls 之上的 ht...

struts2校驗與 ajax之間的那點事

先說說我的問題吧 最近專案使用了struts2的校驗 其實我覺得後台校驗,特別是struts的校驗,完全可以放在其他地方處理,比如交給js或者業務邏輯 而且系統剛好還使用了extjs,此時問題出現了 假如提交資料後,struts校驗沒有通過,那麼struts會自動返回input,而extjs提交資料...

指標和陣列的那點事

總有人認為陣列和指標是c語言裡面最難的部分,其實認真思考發現陣列和指標內容不多,只是我們經常把很多知識ran在一起,搞得自己很混亂。接下來我們細細看一看。一 陣列 陣列 相同型別的元素的集合 1 一維陣列 1 陣列名及意義 1 陣列名 看兩個表示式的宣告 int a int b 5 a是個變數名也是...