通常機器都有一系列的連續編號或編址的存儲單元,這些存儲單元可以單個進行操縱,也可以連續成組的方式進行操縱。通常情況下,機器的一個字節可以存放一個char類型的數據,兩個相鄰的字節存儲單元可存儲一個short(短整型)類型的數據。
下面小編給大家整理了C語言指針與數組知識點講解,最近在學習c語言的指針與數組,在學習的過程中順便把指針這章節的部分知識點簡要的羅列下,以幫助理解記憶。
兩個符號:
1、一元運算符*是間接尋址或間接引用運算符。 當它作用與指針時,將訪問指針所指向的對象。
2、&為地址運算符。它只能應用與內存中的對象,即變量與數組元素。它不能作用與表達式、常量或register類型的變量。
指針定義:
指針是一種變量,它是保存變量地址的變量。
指針與地址
通常機器都有一系列的連續編號或編址的存儲單元,這些存儲單元可以單個進行操縱,也可以連續成組的方式進行操縱。通常情況下,機器的一個字節可以存放一個char類型的數據,兩個相鄰的字節存儲單元可存儲一個short(短整型)類型的數據,而4個相鄰的字節存儲單元便可存儲一個long(長整型)類型的數據。指針是能夠存放一個地址的一組存儲單元(通常為兩個或四個字節)。
簡單示例:
注意:
指針只能指向某種特定類型的對象,也就是說,每個指針都必須指向某種特定的數據類型。而void類型的指針則可以存放指向任何類型的指針,但它不能引用自身。
運算符優先級:
一元運算符*和&的優先級比算術運算符的優先級要高。形如a=*p + 1則執行*p指向的對象的值取出并加1操作,然后再將結果賦值給a。而*p +=1則是將p指向的對象的值加1。
*p +=1 <=>++*p或(*p)++ 一元運算符遵循從右至左的結合順序。
最后補充一點:
由于指針也是變量,所以在程序中可以直接使用,而不必通過間接引用的方法使用。
指針與函數參數
由于c語言是以傳值的方式將參數值傳遞給被調用函數,因此被調用函數不能直接修改主調用函數中變量的值,即使要修改,也只是修改了變量參數副本的值。