C語言學習6指標

2021-10-04 06:39:48 字數 2612 閱讀 9806

1. 指標與指標變數

2. 直接訪問和間接訪問

3. 指標的定義格式

//方法一:

int a;

int*p =

&a;//方法二:

int*p,a;

*p =

&a;

1.概念2.一般形式定義

int

*b[3];

//指標陣列,表示有三個元素,每個元素都是int *;

int(

*p)[3]

;//陣列指標,也可為行指標,它指向包含3個元素的一維陣列;

1.定義乙個指向指標資料的指標又稱為二級指標

2. 二級指標的功能

可以定義乙個字元指標。用字元指標指向字串中的字元。

對於字元指標變數 可以使用下面方法賦值

//方法一:

char

*a =

"hello world!"

//方法二:

char

*a;a =

"hello world!"

//注意此時賦值給a的不是字元,而是 h 的位址

1.函式指標的定義乙個函式在編譯時被分配給乙個入口位址。這個函式的入口位址就稱為函式的指標。

2.函式指標的一般格式

函式型別 ( 指標名)(形參型別)*

int

sum(

int a,

int b)

;//正常函式

int(

*p)(

int,

int)

;//對應的函式指標

int*fun (

void

*a,int

**b)

;//指標函式

int*

(*p)

(void*,

int**)

;//函式指標

3.指標函式的一般格式*型別名 函式名(參數列列);

int*a

(int x,

int y)

;

main函式可以帶有形參 其格式為: main(int argc,char **ar**)

在乙個命令列中包括命令名和需要傳給main函式的引數。

命令列的一般形式為:

命令名 引數1 引數2……引數n

1.const 常變數宣告 在宣告後無法修改

const

int a =10;

//a始終為10,無法修改,若不給a賦初值,則為乙個隨機數

const

char

*p;//const在*號的左邊 表示該指標為唯讀指標 可以指向有效位置,可以指來指去 但無法修改記憶體

char

const

*p;char

*const p //const在*號的右邊則為常量指標 一般要初始化指向** ,指向後無法再指向其他地方 但是可以通過這個指標變數來修改記憶體

const

char

*const p //兩邊都有,則為唯讀常量指標 無法指來指去 也無法通過指標修改記憶體

char

const

*const p

2.出現段錯誤的原因1、訪問非法記憶體

2、修改唯讀常量

3、陣列越界過多

3.void *

void *p

表示指標變數p不指向乙個確定的型別資料,它的作用僅僅是用來存放乙個位址。

void指標它可以指向任何型別資料。也就是說,可以用任何型別的指標直接給void指標賦值。但是,如果需要將void指標的值賦給其他型別的指標,則需要進行強制型別轉換。

可用於函式的傳遞

p = max;

//max為已定義的函式,這時將max的入口位址賦給p;

p1 = p2;

//p1和p2都是指標變數,將p2的值賦給p1;

p =null

;//這時指標變數為空值,不指向任何變數,可以將不用的指標進行這個操作;

*p++

;//相當於 *(p++)

(*p)++;

int a =10;

*a =20;

//解引用符 * 後面必須跟乙個位址,如果 * 後面跟著乙個整數,則編譯器會把整數當做位址處理,此時會發生段錯誤

指標相加沒意義,相加後位址不可控,可能會破壞其他地方內容;連續儲存空間,兩指標相減,可求出兩指標相差位元組數

C語言學習(三) 指標

指標的定義int p char p float p指標變數所佔記憶體的大小 跟前面定義的型別無關 而跟系統有關 16bits作業系統 2b 32bits作業系統 4b 64bits作業系統 8b 指標指向乙個值所在的第乙個位元組 通常乙個位址存放乙個位元組 const修飾指標 指標指向乙個字串時 如...

C語言學習4 指標

int a 10 int p a 一級指標 int s p 二級指標 int p 10 指向陣列的指標 int s 10 指標指向放指標的陣列 這個陣列有十個空間 int p 10 開闢10個空間 每個空間放指標 例如 int br 10 int s 10 br int ar 10 int p 10...

C語言學習筆記02 指標

指標也是一種變數,占有記憶體空間,用來儲存記憶體位址。在指標宣告時,號代表所宣告的變數為指標。在指標使用時,號表示操作指標所指向的記憶體空間的值。p相當於通過位址 p變數的值 找到一塊記憶體,然後操作記憶體。p放在等號的左邊賦值 給記憶體賦值 p放在等號的右邊取值 從記憶體獲取值 指標變數和它所指向...