指標格式:
// 變數型別
變數名;
// 格式:變數型別 *變數名;
//定義了乙個指標變數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的儲存空間中。通過變數名引用變數,由系統自動完成變...