1.什么是指針:
指針是一個存儲計算機內存地址的變量,即指針變量里面存放的是內存地址。
2.操作符:*和&
操作符*根據出現的位置不同,既可以用來聲明一個指針變量,也可以用作指針的取值。當用在聲明一個變量時,*表示這里聲明了一個指針。其它情況用到*表示指針的取值。
&是地址操作符,用來引用一個內存地址。通過在變量名字前使用&操作符,我們可以得到該變量的內存地址。
3.指針的類型:
1)基本類型:int 、short、long、float 、double、char
如 int *p;//表示定義一個指針,這個指針指向整形變量,這個指針將存放的是整形變量的地址。
2)數組指針:指針指向一個數組
int (*a)[10];//表示指針指向一個int型的長度為10的數組。
3)函數指針:指針指向一個函數
void (*a)();//表示指針指向一個無參數無返回值的函數。
4.指針賦值:
賦值方式有兩種
1)定義時賦初值:int a; int *p=&a
2)先定義,后賦初值:int a; int *p; p=&a
5.指針和數組的關系:
指針和數組關系密切,數組可以通過指針去引用,數組可以存放指針,數組也可以由指針去訪問,指針也能存放數組的地址。
6.字符串與指針:
一個字符串常量不可以直接賦給一個數組,比如:char s[10]; s="hello";這種寫法是錯誤的。
但是一個字符串卻可以直接賦給一個指針:char *p; p="hello";這僅限於將一個字符串常量的地址賦給指針p,
但如果char s[10]; char *p=s; *p="hello";這就是非法的,這就相當於直接把字符串常量賦給一個數組,其實字符串常量賦給一個數組可以采用strcpy()函數。