1)
指標可以指定0,NULL,或某個位址
2)
& operator為取址運算子(address
operator)-會回傳operator
address的
一元運算子,不能應用到
常數、運算式或宣告為register的變數
3) * operator為indirection
operator or dereferencing operator(間接或是反參考運算子)-回傳運算元
所指向的物件的值
4) ex:pointer1.c
- %p: 將記憶體位址以16進制印出
- &和*是互補的,同時使用的話就是顯示指標內容
5) C語言中所有的引數都是以值進行傳遞
6) Call
by value 、 Call
by reference
7) 許多函式需要具有修改呼叫函式內定義之變數的能力,或傳遞一個指向大型物件的指標來
避免因為call
by value所產生的額外負擔。因此C提供simulating
call-by-reference的功能
8) 引數加上&來傳遞變數位址,而函式內部用*即可改變變數內容
9)
陣列名稱相當於&array[0],C會自動傳遞陣列的起始位址,所以當陣列是引數時不用加&
10) const修飾詞:告訴編譯器變數不能被修改
11)
軟工觀點:const 可實現最小權限原則,減少偵錯時間,使程式更容易維護。
12)
函式的參數使用const有6種方式,可利用principle
of least privilege作為挑選原則。
<1> a non-constant pointer to non-constant data
指向非常數資料的非常數指標
<2> a constant pointer to non-constant data
指向非常數資料的常數指標
<3>
a non-constant pointer to constant data
指向常數資料的非常數指標
<4> a constant pointer to constant data
指向常數資料的常數指標
沒有留言:
張貼留言