C語言 指針與數(shù)組的詳解及區(qū)別
C語言 指針與數(shù)組的詳解及對比
通俗理解數(shù)組指針和指針數(shù)組
數(shù)組指針:
eg:int( *arr)[10];
數(shù)組指針通俗理解就是這個數(shù)組作為指針,指向某一個變量。
指針數(shù)組:
eg:int*arr[10];
指針數(shù)組簡言之就是存放指針的數(shù)組;
——數(shù)組并非指針&&指針并非數(shù)組
(1)定義一個外部變量:
eg:int value=10; int *p=&value;
舉例:當(dāng)需要在一個函數(shù)中用這個變量時:externa int*p;而非extern int p[];
分析:當(dāng)用:extern int p[];這樣的形式時,其實是:由于在定義這個變量的時候,是作為一個指針而定義的,則p指向的是 value的地址,當(dāng)p當(dāng)做一個數(shù)組被引入是,它其實存放的是value的地址,而并非指向value,導(dǎo)致調(diào)用出現(xiàn)錯誤。
(2)定義一個外部變量:
eg:int arr[10]={0};
舉例:當(dāng)需要在函數(shù)中引入這個外部變量時:extern int arr[10];而非extern int *arr;
分析:當(dāng)用extern int *arr;這樣的方式進(jìn)行引入是,實際上這樣是不對的,在定義這個變量的時候是作為一個整形數(shù)組來定義的,但是在聲明的時候是用指針來聲明的,通過數(shù)組聲明可以訪問到整個數(shù)組,但是通過指針實際上聲明的指針并非指向數(shù)組,而是指向arr[10]數(shù)組中首元素arr[0]地址的指針,導(dǎo)致訪問出現(xiàn)問題。
——二維數(shù)組與指針的關(guān)系
定義一個二維數(shù)組arr[3][3],由于二維數(shù)組在內(nèi)存中也是按照順序存儲,而并非我們所認(rèn)為的按照矩陣形式存儲的。所以,arr[3]其實就相當(dāng)與一個數(shù)組指針;指向arr[0][0],arr[1][0],arr[2][0].
____數(shù)組與指針的其他區(qū)別
(1) 指針保存的是數(shù)據(jù)的地址;
數(shù)組是用來保存數(shù)據(jù)的。
(2)指針訪問數(shù)據(jù)是通過數(shù)據(jù)的地址進(jìn)行解引用,間接訪問的;
數(shù)組訪問數(shù)據(jù)是直接的。
(3)指針通常用于動態(tài)數(shù)據(jù)結(jié)構(gòu);
數(shù)組用于存放固定數(shù)目而且類型相同的數(shù)據(jù)。
(4)指針通常指向匿名數(shù)據(jù);
數(shù)組通常存放已知的。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
上一篇:C++11右值引用和std::move語句實例解析(推薦)
欄 目:C語言
本文標(biāo)題:C語言 指針與數(shù)組的詳解及區(qū)別
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1689.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對數(shù)怎么表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-10C#中split用法實例總結(jié)
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置