- 相關推薦
C語言中指針與數組的區別
通俗理解數組指針和指針數組,C語言中指針與數組有什么區別呢?應該怎么去區分?下面是小編為大家整理的C語言中指針與數組的區別,歡迎參考~
通俗理解數組指針和指針數組
數組指針:
eg:int( *arr)[10];
數組指針通俗理解就是這個數組作為指針,指向某一個變量。
指針數組:
eg:int*arr[10];
指針數組簡言之就是存放指針的數組;
——數組并非指針&&指針并非數組
(1)定義一個外部變量:
eg:int value=10; int *p=&value;
舉例:當需要在一個函數中用這個變量時:externa int*p;而非extern int p[];
分析:當用:extern int p[];這樣的形式時,其實是:由于在定義這個變量的時候,是作為一個指針而定義的,則p指向的是 value的地址,當p當做一個數組被引入是,它其實存放的是value的地址,而并非指向value,導致調用出現錯誤。
(2)定義一個外部變量:
eg:int arr[10]={0};
舉例:當需要在函數中引入這個外部變量時:extern int arr[10];而非extern int *arr;
分析:當用extern int *arr;這樣的方式進行引入是,實際上這樣是不對的,在定義這個變量的時候是作為一個整形數組來定義的,但是在聲明的時候是用指針來聲明的,通過數組聲明可以訪問到整個數組,但是通過指針實際上聲明的指針并非指向數組,而是指向arr[10]數組中首元素arr[0]地址的指針,導致訪問出現問題。
——二維數組與指針的關系
定義一個二維數組arr[3][3],由于二維數組在內存中也是按照順序存儲,而并非我們所認為的按照矩陣形式存儲的。所以,arr[3]其實就相當與一個數組指針;指向arr[0][0],arr[1][0],arr[2][0].
數組與指針的其他區別
(1)指針保存的是數據的地址;
數組是用來保存數據的。
(2)指針訪問數據是通過數據的地址進行解引用,間接訪問的;
數組訪問數據是直接的。
(3)指針通常用于動態數據結構;
數組用于存放固定數目而且類型相同的數據。
(4)指針通常指向匿名數據;
數組通常存放已知的。
C語言簡介
C語言是一門面向過程的計算機編程語言,與C++、C#、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。C語言描述問題比匯編語言迅速、工作量小、可讀性好、易于調試、修改和移植,而代碼質量與匯編語言相當。C語言一般只比匯編語言代碼生成的目標程序效率低10%-20%。因此,C語言可以編寫系統軟件。
當前階段,在編程領域中,C語言的運用非常之多,它兼顧了高級語言和匯編語言的優點,相較于其它編程語言具有較大優勢。計算機系統設計以及應用程序編寫是C語言應用的兩大領域。同時,C語言的普適較強,在許多計算機操作系統中都能夠得到適用,且效率顯著。
C語言擁有經過了漫長發展歷史的完整的理論體系,在編程語言中具有舉足輕重的地位。
【C語言中指針與數組的區別】相關文章:
C語言指針和數組基礎知識10-26
c語言指針運用中堆和棧的區別10-06
什么是C語言數組10-03
C語言學習中的指針用法教程08-25
如何理解C語言指針05-19
C語言數組實例解析10-21
C語言數組是什么08-25
C語言中指針的概念03-16
C語言指針知識點10-10
C語言中的指針是什么08-08