C指標相關

2021-10-19 19:39:52 字數 2067 閱讀 5847

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...