C語言學習筆記(五)指標

2021-06-22 09:11:50 字數 2215 閱讀 1917

指標格式: 

// 變數型別

變數名;

// 格式:變數型別 *變數名;

//定義了乙個指標變數p

//指標變數只能儲存位址

//指標變數p前面的int:指標變數p只能指向int型別的資料

一、指標變數的定義

1.格式:變數型別*指標變數名; 2.

舉例:int *p;  char *p2;

3.注意:定義變數時的*僅僅是指標變數的象徵

二、利用指標變數簡單修改其他變數的值

1.指向某個變數

int a;

int *p;

p = &a;

或者int *p = &a;

2.修改所指向變數的值

*p = 10;

3.在函式內部修改外面變數的值

int a =10;

change(&a);

void change(int *n)

三、指標也可以當陣列用。

#include /*

1.陣列元素的訪問方式

int ages[5];

int *p;

p = ages;

1> 陣列名[下標] ages[i]

2> 指標變數名[下標] p[i]

3> *(p + i)

2.指標變數+1,位址值究竟加多少,取決於指標的型別

int * 4

char * 1

double * 8

*/void change(int array);

int main()

;

change(ages);

return 0;

}// 利用乙個指標來接收乙個陣列,指標變數array指向了陣列的首元素

void change(int *array)

/*void change(int array)

*/void test()

;

int *p;

// 指標變數p指向了陣列的首元素

p = &ages[0];

// 陣列名就是陣列的位址,也是陣列首元素的位址

//p = ages;

/*p ---> &ages[0]

p + 1 ---> &ages[1]

p + 2 ---> &ages[2]

p + i ---> &ages[i]

*///printf("%d\n", *(p+2));

printf("%d\n", p[2]);

/*for (int i = 0; i<5; i++) */

// printf("%p\n", p);

// printf("%p\n", p + 1);

// printf("%p\n", p + 2);

}

四、指標和字串

#include /*

1.常量區

存放一些常量字串

2.堆物件

3.棧存放區域性變數

掌握:定義字串的2種方式

1> 利用陣列

char name = "itcast";

* 特點:字串裡面的字元是可以修改的

* 使用場合:字串的內容需要經常修改

2> 利用指標

char *name = "itcast";

* 特點:字串其實是乙個常量字串,裡面的字元是不能修改

* 使用場合:字串的內容不需要修改,而且這個字串經常使用

*/int main()

// 定義字串陣列

void test2()

;

// 二維字元陣列(字串陣列)

char names2[2][10] = ;

}// 定義字串

void test()

五、指向函式的指標

// (*p)是固定寫法,代表指標變數p將來肯定是指向函式

//左邊的void:指標變數p指向的函式沒有返回值

//右邊的():指標變數p指向的函式沒有形參

void (*p)();

// 指標變數p指向了test函式

p = test;

p();

(*p)(); // 利用指標變數間接呼叫函式

//test(); // 直接呼叫函式

C語言學習筆記(五)指標

4 指標與陣列 為什麼陣列傳進函式後sizeof不對了?5 指標和const 指標本身和所指的變數都可能const 二 指標運算 scanf d i int i printf p i int i int p i int p,q int p,q 在函式裡面可以通過這個指標訪問外面的這個i voidf ...

C語言學習(五)指標

int main int i 定義整型變數 int 為指向整型資料的指標變數 inta n 定義整型陣列 它有 個元素 int 定義指標陣列 它由 個指向整型資料的指標元素組成 int p為指向含n個元素的一維陣列的指標變數 int f 為帶回整型函式值的函式 int 為帶回乙個指標的函式,該指標指...

C語言學習入門 五 指標

chara a 10 程式內部是怎麼操作的呢?其實,程式對變數的讀寫操作,實際上是對變數所在的儲存空間進行寫入或取出資料。就上面的 而言,系統會自動將變數名a轉換為變數的儲存位址,根據位址找到變數a的儲存空間,然後再將資料10以2進製的形式放入變數a的儲存空間中。通過變數名引用變數,由系統自動完成變...