- 相關(guān)推薦
C語言中指針與數(shù)組的區(qū)別
通俗理解數(shù)組指針和指針數(shù)組,C語言中指針與數(shù)組有什么區(qū)別呢?應(yīng)該怎么去區(qū)分?下面是小編為大家整理的C語言中指針與數(shù)組的區(qū)別,歡迎參考~
通俗理解數(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;這樣的方式進行引入是,實際上這樣是不對的,在定義這個變量的時候是作為一個整形數(shù)組來定義的,但是在聲明的時候是用指針來聲明的,通過數(shù)組聲明可以訪問到整個數(shù)組,但是通過指針實際上聲明的指針并非指向數(shù)組,而是指向arr[10]數(shù)組中首元素arr[0]地址的指針,導(dǎo)致訪問出現(xiàn)問題。
——二維數(shù)組與指針的關(guān)系
定義一個二維數(shù)組arr[3][3],由于二維數(shù)組在內(nèi)存中也是按照順序存儲,而并非我們所認為的按照矩陣形式存儲的。所以,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ù)的地址進行解引用,間接訪問的;
數(shù)組訪問數(shù)據(jù)是直接的。
(3)指針通常用于動態(tài)數(shù)據(jù)結(jié)構(gòu);
數(shù)組用于存放固定數(shù)目而且類型相同的數(shù)據(jù)。
。4)指針通常指向匿名數(shù)據(jù);
數(shù)組通常存放已知的。
C語言簡介
C語言是一門面向過程的計算機編程語言,與C++、C#、Java等面向?qū)ο缶幊陶Z言有所不同。C語言的設(shè)計目標(biāo)是提供一種能以簡易的方式編譯、處理低級存儲器、僅產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。C語言描述問題比匯編語言迅速、工作量小、可讀性好、易于調(diào)試、修改和移植,而代碼質(zhì)量與匯編語言相當(dāng)。C語言一般只比匯編語言代碼生成的目標(biāo)程序效率低10%-20%。因此,C語言可以編寫系統(tǒng)軟件。
當(dāng)前階段,在編程領(lǐng)域中,C語言的運用非常之多,它兼顧了高級語言和匯編語言的優(yōu)點,相較于其它編程語言具有較大優(yōu)勢。計算機系統(tǒng)設(shè)計以及應(yīng)用程序編寫是C語言應(yīng)用的兩大領(lǐng)域。同時,C語言的普適較強,在許多計算機操作系統(tǒng)中都能夠得到適用,且效率顯著。
C語言擁有經(jīng)過了漫長發(fā)展歷史的完整的理論體系,在編程語言中具有舉足輕重的地位。
【C語言中指針與數(shù)組的區(qū)別】相關(guān)文章:
c語言指針運用中堆和棧的區(qū)別10-06
什么是C語言數(shù)組10-03
如何理解C語言指針05-19
C語言數(shù)組實例解析10-21
C語言數(shù)組是什么08-25
C語言中指針的概念03-16
C語言指針知識點10-10
C語言中的指針是什么08-08