指针变量是一种特殊的变量,它指向的是一个地址。
声明
空的指针
int *p=NULL;
指向一个变量的指针
int a;
int *p=&a;
int a;
int *p=NULL;
p = &a;//赋值,注意[ *p=&……(变量) ]或[ p=&……(值) ]是错误的
//正确的用法是[ *p=&……(值) ][ p=&……(变量) ]
无类型的指针
void *p
强制转换
(int*)p
注:int可换为任意类型
调用
指针类型 | 等价于 | 正常变量 |
---|---|---|
*p | 等价于 | a |
p | 等价于 | &a |
*p=1 | 等价于 | a=1 |
应用
1. 链表
见博客
2.数组作为函数参数
void function(int *p){
}
int main(){
int a[max_n];
function(a);
}
在函数里使用数组:
a[i] = p+i;
(p+i表示的不是地址加i而是跳过i个内存中的变量)