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++跳轉語句之Goto對變量定義的影響詳解
goto語句也稱為無條件轉移語句,以下是為大家分享的C++跳轉語句之Goto對變量定義的影響詳解,供大家參考借鑑,歡迎瀏覽!前言goto語句也稱為無條件轉移語句,其基本形式如下:語句標號由一個有效地標識符和符號";"組成,其中,標識符的命名規則與變量名稱相同,即由字母、數字...
-
測試C語言功力的幾個問題
在實際的VC++教學中,發現很少有真正精通了C語言編程的學員,一般都有或多或少概念不是完全清楚的問題,特別是一些需要豐富的實戰經驗才能體會和明白的問題,如字符串,指針,類型轉換,定義指向函數的指針類型,這也是導致學習VC++困難的一個原因。下面就來和小編一起看看測...
-
C語言指針的長度和類型講解
對於初學者深入理解C語言程序設計有很好的參考價值,下面是小編為大家整理的C語言指針的長度和類型講解,歡迎參考~一般來説,如果考慮應用程序的兼容性和可移植性,指針的長度就是一個問題,在大部分現代平台上,數據指針的長度通常是一樣的,與指針類型無關,儘管C標準沒有規...
-
2017年C語言新增無紙化真題練習
C語言的應用範圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發上,而且各類科研都需要用到C語言,適於編寫系統軟件,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。以下是小編為大家搜索整理的2017年C語言新增無紙化真題練習,希望能給大家帶來幫助!更多...