1.指標和指標型別
我們都知道指標是乙個變數,是乙個存放位址的變數。既然如此我們為何不單獨定義乙個型別呢?而是要用其他型別加星號來作為指標變數,有什麼作用呢?
1.決定了指標的訪問許可權,也就是能訪問幾個位元組。
int
main()
通過除錯檢視記憶體,可以看出a的記憶體是
當*p等於0的時候記憶體的變化,記憶體塊裡的4個位元組全部變成0,
int
main()
而當使用char型別的指標時,同樣的位址,*p變成0之後,僅第乙個位元組變成0
由此可見,指標型別的作用有決定了指標的訪問許可權,也就是能訪問幾個位元組。
2.指標決定了加減所走的距離。
int
main()
;int
*p = arr;
int i =0;
for(i =
0; i <
10; i++
)for
(i =
0; i <
10; i++
)return0;
}
arr陣列中含有十個整型的空間,總共有40個位元組,由於是int型別的指標,每+1訪問4個位元組的空間,所以利用for迴圈可以填滿arr陣列。列印結果如下
int
main()
;char
*pc = arr;
int i =0;
for(i =
0; i <
40; i++
)return
0}
當我們用字元型的指標訪問時,乙個char型別訪問乙個位元組的內容,當我們填滿arr時,需要40次迴圈填滿。
2.野指標
概念: 野指標就是指標指向的位置是不可知的(隨機的、不正確的、沒有明確限制的)
1.指標指向的空間釋放
int
*test()
intmain()
這個test函式傳回來的位址沒有意義,因為a是我們建立的臨時變數,一旦脫離就消失了,所以這個p得到的位址指向的空間已經釋放,稱之為野指標。
2.指標越界訪問
這個就是我們平常的陣列,因為下標從0開始,所以定義陣列的時候,個數所在的位置不能使用,稱為越界。
3.指標的初始化
#include
intmain()
如果這樣寫是錯誤的,不能這樣寫。
指標的有效性
由於空指標不能訪問,所以在每次使用之前我們要保證指標不等於空指標的時候再訪問它,檢查指標的有效性。
numpy中的易混淆點
論numpy中matrix 和 array的區別 numpy matrices必須是2維的,但是 numpy arrays ndarrays 可以是多維的 1d,2d,3d nd matrix是array的乙個小的分支,包含於array。所以matrix 擁有array的所有特性。在numpy中ma...
mysql易混淆點
1 alter table 表名 change name names char 40 after 欄位名 改變位置放到字段之後 before 放到字段之前 2 查詢要攜帶索引字段,通常放在select之後第乙個 3 檢視檢視命令 show table status where comment vie...
易混淆 指標常量 常量指標
指標常量 可以這樣理解,把指標當成形容詞 那麼它就是乙個常量,只不過是指標修飾的。格式為 int const p 指標常量 例如 int a,b int const p a 指標常量 注意以下兩種操作 p 10 操作成功 p b 操作錯誤總結 因為是指標常量,說明指標變數不允許修改 即指向不可修改 ...