• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C小加

            厚德 博學 求真 至善 The bright moon and breeze
            posts - 145, comments - 195, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            數組名是指針么?

            Posted on 2011-12-23 22:27 C小加 閱讀(3046) 評論(2)  編輯 收藏 引用 所屬分類: C++和面向對象
            數組名是指針么?如果不是,數組名到底是怎樣的一種結構?求解釋。

            我敘述一下我所知道的數組名與指針的區別。

            1、地址相同,大小不同
            看下面代碼:
            1     int arr[10];
            2     int* p=arr;
            3     cout<<arr<<endl;
            4     cout<<p<<endl;
            5     cout<<sizeof(arr)<<endl;//結果為40
            6     cout<<sizeof(p)<<endl;//結果為4

            arr為數組名,p為指針。
            第3、4行輸出的值一樣,也就是說arr和p都是數組的首地址。第5、6行的結果不一樣,arr的大小是整個數組的大小,而p的大小是指針的大小。
            為什么arr的大小會是40?

            2、都可以用指針作為形參
            指針的形參當然是指針。數組的形參可以是數組,也可以是指針。下面代碼印證了數組的形參可以是指針。
             1 void fun(int* p)
             2 {
             3     cout<<p[0]<<endl;
             4 }
             5 
             6 
             7 int main()
             8 {
             9     int arr[10]={0};
            10     int* p=arr;
            11     fun(arr);
            12     
            13     return 0;
            14 }

            這點可以看出,數組名完全可以當成指針來用。

            3、指針可以自加,數組名不可以

            1     int arr[10]={0};
            2     int* p=arr;
            3     arr++;
            4     p++;

            當數組名自加時程序編譯就會出錯,從這點應該可以看出,數組名是一個常量(const 修飾)。


            4、作為參數的數組名的大小和指針的大小相同

            1 void fun(int arr[])
            2 {
            3     cout<<sizeof(arr)<<endl;//結果為4
            4     arr++;//編譯成功
            5 }
            6 

            arr的大小變為4、arr++成功編譯可以確定,作為參數的arr已經完全變成了一個指針。

            以上就是我所知道的指針與數組名的區別,如果還有別的區別請留言告訴我,如果誰知道數組名到底是一種什么樣的結構,也請留言告知,謝謝哈。




            Feedback

            # re: 數組名是指針么?[未登錄]  回復  更多評論   

            2011-12-24 12:40 by Wang
            int arr[10],arr 是一個數組,類型是 int [10]。

            數組的類型是 類型 [元素數目]。可以看出數組的種類很多,只要類型或者元素數目不同,就是不同的數組。

            數組不能作為參數傳遞,因此
            void fun(int arr[])
            就是
            void fun(int* arr)
            函數體內當然有 sizeof arr == sizeof(void*)

            有指向數組的指針和到數組的引用,指針的類型是 類型 (*)[元素數目],引用類似。

            # re: 數組名是指針么?  回復  更多評論   

            2011-12-26 12:15 by hacqing
            由于人類喜愛對稱美, 因此對數組元素的訪問除了平常使用的array[index], 還可以使用index[array]. 哈哈.
            日韩久久久久中文字幕人妻| 69国产成人综合久久精品| 少妇久久久久久被弄高潮| 亚洲精品无码久久久| 免费精品国产日韩热久久| 狠狠人妻久久久久久综合| 99久久精品费精品国产| 国产精品伦理久久久久久| 亚洲精品综合久久| 亚洲一区精品伊人久久伊人| 一极黄色视频久久网站| 久久久久久久综合狠狠综合| 亚洲国产成人久久综合野外| 久久影院久久香蕉国产线看观看| 亚洲中文久久精品无码ww16| 蜜臀av性久久久久蜜臀aⅴ麻豆| 国产高潮国产高潮久久久| 欧美激情精品久久久久久久九九九| 久久精品国产99久久丝袜| 久久久噜噜噜久久熟女AA片| 国内精品久久久久久中文字幕| 伊人久久大香线蕉精品| 理论片午午伦夜理片久久 | 久久久午夜精品福利内容| 久久久久99这里有精品10| 伊人久久大香线蕉av一区| 久久国产高清字幕中文| 久久婷婷五月综合色奶水99啪| 热99re久久国超精品首页| 久久人人爽人人爽人人片AV不| 无码AV中文字幕久久专区| 免费观看成人久久网免费观看| 久久精品无码一区二区app| 久久婷婷五月综合97色直播| 久久91精品国产91久久小草| 欧美日韩中文字幕久久久不卡| 亚洲午夜久久久影院| 国产精品嫩草影院久久| 久久精品无码专区免费东京热 | 亚洲国产精品无码久久久秋霞2 | 无码日韩人妻精品久久蜜桃|