C語言指針的總結
指針(Pointer)就是內存的地址,C語言允許用一個變量來存放指針,這種變量稱為指針變量。下面小編給大家介紹C語言指針的總結,歡迎閲讀!
C語言指針的總結指針變量可以存放基本類型數據的地址,也可以存放數組、函數以及其他指針變量的地址。
程序在運行過程中需要的是數據和指令的地址,變量名、函數名、字符串名和數組名在本質上是一樣的,它們都是地址的助記符:在編寫代碼的過程中,我們認為變量名錶示的是數據本身,而函數名、字符串名和數組名錶示的是代碼塊或數據塊的首地址;程序被編譯和鏈接後,這些名字都會消失,取而代之的是它們對應的地址。
定 義 | 含 義 |
---|---|
int *p; | p 可以指向 int 類型的.數據,也可以指向類似 int arr[n] 的數組。 |
int **p; | p 為二級指針,指向 int * 類型的數據。 |
int *p[n]; | p 為指針數組。[ ] 的優先級高於 *,所以應該理解為 int *(p[n]); |
int (*p)[n]; | p 為二維數組指針。 |
int *p(); | p 是一個函數,它的返回值類型為 int *。 |
int (*p)(); | p 是一個函數指針,指向原型為 int func() 的函數。 |
1) 指針變量可以進行加減運算,例如p++、p+i、p-=i。指針變量的加減運算並不是簡單的加上或減去一個整數,而是跟指針指向的數據類型有關。
2) 給指針變量賦值時,要將一份數據的地址賦給它,不能直接賦給一個整數,例如int *p = 1000;是沒有意義的,使用過程中一般會導致程序崩潰。
3) 使用指針變量之前一定要初始化,否則就不能確定指針指向哪裏,如果它指向的內存沒有使用權限,程序就崩潰了。對於暫時沒有指向的指針,建議賦值NULL。
4) 兩個指針變量可以相減。如果兩個指針變量指向同一個數組中的某個元素,那麼相減的結果就是兩個指針之間相差的元素個數。
5) 數組也是有類型的,數組名的本意是表示一組類型相同的數據。在定義數組時,或者和 sizeof、& 運算符一起使用時數組名才表示整個數組,表達式中的數組名會被轉換為一個指向數組的指針。
-
C語言合併排序及實例代碼
歸併排序也稱合併排序,其算法思想是將待排序序列分為兩部分,依次對分得的兩個部分再次使用歸併排序,之後再對其進行合併。下面是小編分享的C語言合併排序及實例代碼,一起來看一下吧。合併排序僅從算法思想上了解歸併排序會覺得很抽象,接下來就以對序列A[0],A[l]…,A...
-
C語言學習攻略
導語:C語言作為最流行的程序設計語言,是任何一個計算機專業及其愛好者們都必須掌握的一門編程語言。下面就由小編為大家介紹一下C語言學習攻略,歡迎大家閲讀!一、C語言學習中存在的問題(一)基礎薄弱,無法適應C語言學習的課程通常安排在大一,這個時候,學生們剛剛進入...
-
C語言指針的長度和類型講解
對於初學者深入理解C語言程序設計有很好的參考價值,下面是小編為大家整理的C語言指針的長度和類型講解,歡迎參考~一般來説,如果考慮應用程序的兼容性和可移植性,指針的長度就是一個問題,在大部分現代平台上,數據指針的長度通常是一樣的,與指針類型無關,儘管C標準沒有規...
-
如何使用C語言求N的階乘
使用C語言求N的階乘的方法是很多小夥伴都想知道的,下面小編給大家介紹如何使用C語言求N的階乘,歡迎閲讀!如何使用C語言求N的階乘用遞歸法求N的.階乘程序調用自身稱為遞歸(recursion).它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求...