• <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小加

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

            數(shù)組名是指針么?

            Posted on 2011-12-23 22:27 C小加 閱讀(3060) 評論(2)  編輯 收藏 引用 所屬分類: C++和面向?qū)ο?/a>
            數(shù)組名是指針么?如果不是,數(shù)組名到底是怎樣的一種結(jié)構(gòu)?求解釋。

            我敘述一下我所知道的數(shù)組名與指針的區(qū)別。

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

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

            2、都可以用指針作為形參
            指針的形參當(dāng)然是指針。數(shù)組的形參可以是數(shù)組,也可以是指針。下面代碼印證了數(shù)組的形參可以是指針。
             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 }

            這點(diǎn)可以看出,數(shù)組名完全可以當(dāng)成指針來用。

            3、指針可以自加,數(shù)組名不可以

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

            當(dāng)數(shù)組名自加時(shí)程序編譯就會(huì)出錯(cuò),從這點(diǎn)應(yīng)該可以看出,數(shù)組名是一個(gè)常量(const 修飾)。


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

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

            arr的大小變?yōu)?、arr++成功編譯可以確定,作為參數(shù)的arr已經(jīng)完全變成了一個(gè)指針。

            以上就是我所知道的指針與數(shù)組名的區(qū)別,如果還有別的區(qū)別請留言告訴我,如果誰知道數(shù)組名到底是一種什么樣的結(jié)構(gòu),也請留言告知,謝謝哈。




            Feedback

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

            2011-12-24 12:40 by Wang
            int arr[10],arr 是一個(gè)數(shù)組,類型是 int [10]。

            數(shù)組的類型是 類型 [元素?cái)?shù)目]??梢钥闯鰯?shù)組的種類很多,只要類型或者元素?cái)?shù)目不同,就是不同的數(shù)組。

            數(shù)組不能作為參數(shù)傳遞,因此
            void fun(int arr[])
            就是
            void fun(int* arr)
            函數(shù)體內(nèi)當(dāng)然有 sizeof arr == sizeof(void*)

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

            # re: 數(shù)組名是指針么?  回復(fù)  更多評論   

            2011-12-26 12:15 by hacqing
            由于人類喜愛對稱美, 因此對數(shù)組元素的訪問除了平常使用的array[index], 還可以使用index[array]. 哈哈.
            国产精品欧美亚洲韩国日本久久 | 91秦先生久久久久久久| 精品久久久久久亚洲精品| 日韩亚洲欧美久久久www综合网| 国内精品久久久久国产盗摄| 日本久久久久久久久久| 久久亚洲精精品中文字幕| 中文字幕久久欲求不满| 久久久这里只有精品加勒比| 一本一道久久精品综合| 久久久久亚洲av成人网人人软件| 久久久精品免费国产四虎| 精品国产乱码久久久久软件| 99久久夜色精品国产网站| 日韩人妻无码精品久久免费一 | 亚洲美日韩Av中文字幕无码久久久妻妇| 日韩乱码人妻无码中文字幕久久| 精品久久久无码中文字幕| 久久99精品久久久久子伦| 久久伊人五月丁香狠狠色| 国产ww久久久久久久久久| 久久精品国产亚洲沈樵| 久久亚洲欧美国产精品| 婷婷久久五月天| 亚洲日本va午夜中文字幕久久| 青青青青久久精品国产| 久久精品人人做人人爽电影蜜月 | 久久天天躁狠狠躁夜夜2020老熟妇| 国产亚洲综合久久系列| 少妇人妻88久久中文字幕| 亚洲AV无码久久| 亚洲精品白浆高清久久久久久| 国内精品久久国产| 麻豆精品久久久久久久99蜜桃| 开心久久婷婷综合中文字幕| 久久免费国产精品| 香蕉久久夜色精品国产2020| 色狠狠久久综合网| 精品久久久久久国产| 久久99精品国产麻豆| 99久久99久久|