指標小知識

2021-09-11 01:39:36 字數 1140 閱讀 5381

1.帶有*的變數型別的標準寫法,變數型別* 變數名。

2.任何型別都可以帶上*,加上*以後是新的型別。

3.*可以是任意多個。

4.不管原來什麼型別,只要帶*,不管幾個*,就是指標,通用占用4個位元組。

5.指標賦值必須前後一樣,「完整寫法」int* x = (int *)6。   

6.帶*型別的變數可以加、減乙個整數,但是不能乘或者除。

7.帶*型別變數與其他整數相加或者相減時:

帶*型別變數 + n = 帶*型別變數+ n*(去掉乙個*後型別的寬度)。

帶*型別變數 - n = 帶*型別變數- n*(去掉乙個*後型別的寬度)。

8.兩個型別相同的帶*型別的變數可以進行減法操作。

9.相減的結果要除以去電乙個*的資料寬度。

10.帶*的變數,如果型別相同,可以做大小的比較。

11.&可以對任意變數使用,使用後,型別變為:*+原變數。

12.*只能用在原來就帶有*的變數。

13.指標定義的字串儲存在常量區,不能修改!!想修改必須定義陣列。

錯誤:char *p = "abc",嘗試修改字串的值。

正確:char p = "abc",可以使用指標任意修改,因為儲存在棧。

14.指標函式:就是乙個函式,只是返回值是指標。

15.指標陣列:就是乙個陣列,只不過裡面存的都是指標。

16.結構體指標:

17:*p == *(p+0) == p[0] == *(p+i) == p[i];

18.在編譯器眼中,指標可以用*取值,也可以用來取值。

19.*(p+i) =  p[i];

*(*(p+i)+k) = p[i][k];

*(*(*(p+i)+k)+m) = p[i][k][m];

*(*(*(*(p+i)+k)+m)+t) = p[i][k][m][t];

*()可以與相互轉換。

int *ptr = null;

ptr = (int *)malloc(sizeof(int)*128);

if(ptr != null)memset(ptr,0,sizeof(int)*128);

*ptr = 1;

free(ptr);

ptr = null;

小知識 指標

定義乙個指標 變數型別 變數名 int p 指標變數只能用來儲存位址!int p int a 90 p a p指向了a p 10 p指向了a位址對應的儲存空間!例 從main函式裡改變乙個變數的值!includevoid change int p main int i 20 change i pri...

C C 指標 引用相關小知識

在乙個變數前面加上 就表示變數的位址。指標實際上是表示記憶體位址的乙個整數,它是乙個unsigned型別的整數。在c語言中,陣列名也可以作為陣列的首位址使用。使用指標變數作為函式引數 指標型別也可以作為函式引數對的型別,這時視為把變數的位址傳入函式。如果在函式中對這個位址中的元素進行改變,原先的資料...

python小知識 Python小知識

1 python是一種解釋性語言,當程式執行時,一行一行的解釋,並執行 優點 除錯 很方便,開發效率高,並且可以跨平台 不但入門容易,而且將來深入下去,可以編寫那些非常非常複雜的程式。缺點 執行速度慢。python的種類 cpython ipython pypy jython ironpython ...