找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2937|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

數(shù)組名和數(shù)組名取地址&

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:91350 發(fā)表于 2015-10-29 22:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在C中, 在幾乎所有使用數(shù)組的表達式中,數(shù)組名的值是個指針常量,也就是數(shù)組第一個元素的地址。 它的類型取決于數(shù)組元素的類型: 如果它們是int類型,那么數(shù)組名的類型就是“指向int的常量指針“。               在以下兩種場合下,數(shù)組名并不是用指針常量來表示,就是當(dāng)數(shù)組名作為sizeof操作符和單目操作符&的操作數(shù)時。 sizeof返回整個數(shù)組的長度,而不是指向數(shù)組的指針的長度。 取一個數(shù)組名的地址所產(chǎn)生的是一個指向數(shù)組的指針,而不是一個指向某個指針常量的指針。所以&a后返回的指針便是指向數(shù)組的指針,跟a在指針的類型上是有區(qū)別的。
               請看下面的例子:
       
   從以上輸出我們可以看出:數(shù)組名和數(shù)組名取地址在數(shù)值上是相同的,均表示數(shù)組第一個元素的地址。但是二者的顆粒度不同。                 當(dāng)數(shù)組是一維數(shù)組時,數(shù)組名是以一個數(shù)組元素為顆粒度,表現(xiàn)為“當(dāng)數(shù)組名加1時,這里的1表示一個數(shù)組元素單元”,例子中的數(shù)組元素為整數(shù),所以數(shù)組名加1時地址加4;而數(shù)組名取地址&以整個數(shù)組為顆粒度,表現(xiàn)為“當(dāng)數(shù)組名取地址&加1時,這里的1是表示整個數(shù)組單元”,例子中的數(shù)組為有5個元素的整型數(shù)組,所以數(shù)組名取地址&加1時,地址加20.
               當(dāng)數(shù)組是二維數(shù)組時,數(shù)組名array、array[0]、&array[0][0]以及數(shù)組名取地址&在數(shù)值上是相同的,同樣各個之間的顆粒度不同。其中array[0]以及 &array[0][0] 的顆粒度相同,均是以一個數(shù)組元素為顆粒度,所以它們加1后,地址加4;而數(shù)組名和數(shù)組名取地址&顆粒度不同,前者以一行元素為顆粒度,后者以整個數(shù)組單元為顆粒度,所以前者加1,地址加3*4,后者加1,地址加6*4.

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:94263 發(fā)表于 2015-11-1 00:18 | 只看該作者
這種東西還是看靠譜的書或者標(biāo)準(zhǔn)的文檔吧。。。這種二手的資料自己理解沒問題,說的對倒也還好,萬一出了錯那真是會害人的
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表