const是乙個修飾符,告訴編譯器這個變數不可以被更改, 而指標代表兩個東西,本身和指標所指的位址的內容, 那麼指標遇到const將會發生什麼?
判斷技巧
如果const出現在指標【*】的前面, 說明不可以通過指標修改內容,所指是const
如果const出現在指標【*】的後面, 說明所指標不可以修改所指物件, 指標是const
因為陣列本身其實是乙個const指標,那麼如果在陣列前面再加const將會如何?
陣列中的所有的變數將全部會是const,此時必須進行初始化賦值
const int a[5] = -> const int a[0], const int a[1]...
為了保護陣列內容不會被破壞,可以選擇傳遞const陣列作為引數: void test(const int a, int length)
指標的加1真的是加1嗎?
其實是加的sizeof(type)type = int就是加4, type = short就是加2
*p -> a[0], *(p + 1) -> a[1]
兩個指標相減又會如何?
p1 - p2 = 兩個指標之間最多可以安放多少個這種型別的值
例如:
int numbers=
int*r1 = numbers;
// 相當於 int *r1 = &numbers[0]
int*r2 =
&numbers[6]
;// r1 = 0061fe9c r2 = 0061feb4
// r2 - r1 = 6【說明兩個指標之間差6個int型別的長度】
*p++?
取出p所指的那個資料,然後將p移動到下乙個位置
0位址是啥?進行動態記憶體分配?
c99之前要使用malloc進行動態記憶體分配,而malloc函式在中
type *a = (type*)malloc(number * sizeof(type))
#include
#include
#include
intmain()
;int
*r = numbers;
int*r1 = numbers;
int*r2 =
&numbers[6]
;printf
("r1 = %p\n"
, r1)
;printf
("r2 = %p\n"
, r2)
;printf
("r2 - r1 = %d\n"
, r2 - r1)
;printf
("r = %p\n"
, r)
; r = r +1;
printf
("r = %p\n"
, r)
; 動態分配
int count;
int*a;
printf
("請輸入個數: ");
scanf
("%d"
,&count)
; a =
(int*)
malloc
(count *
sizeof
(int))
;for
(int i =
0; i < count; i++
)for
(int i = count -
1; i >=
0; i--
)free
(a);
return0;
}
C 函式指標相關
問 先定義了個函式 int function int a,int b main函式裡面有個函式指標 問題1 那麼下面兩種對函式指標的賦值哪個是正確的,還是都可以?int main void 問題2 使用fp這個函式指標的時候,下面哪種是正確的,還是都正確?a fp 1,2 b fp 1,2 解釋為什...
C 指標相關問題
b int 表示指向指標的指標 int m 1 int p m int a p c 陣列指標和指標陣列 指標陣列 int int a 3 array of pointers,陣列指標 int int a 3 a pointer to an arraya 定義乙個一維陣列,陣列名是這個陣列的首位址 b...
C 指標和new相關
看黃邦勇帥的筆記。指標和new之前覺得已經掌握的很好了,可是看了資料還是get到了新知識。記錄一下。1.指標只支援 4 種算術運算子 指標只能與整數加減 指標運算的原則是 每當指標的值增加時,它將指向其基本型別的下乙個元素的儲存單元 減少時則指向上乙個元素的儲存單元 2.注意兩個指標不能相加 例 i...