1.指针
地址:内存单元的编号;
指针:等价于地址;
指针变量是存放内存单元地址的变量;
2.int * p
p是变量名
p只能存储int类型变量的地址
int i=10;
p=&i;取i的地址
所以 *p=i=10
地址 | 数据 | 变量名 |
---|---|---|
1000H | 2000H | P |
– | – | – |
2000H | 10 | i |
3.被调函数用指针改变主函数的实参
在这里插入代码片
void f(int *p){
*p=10;
}
int main(void){
int i=1;
f(&i);
pritf("%d/n",i);
}
//输出i=10;
4.指针与数组
int a[3]={1,2,3}
a[i]==*(a+i)
*a+2 ==a[0]+2
a==&a[0]
void show-array(int *p int len){
p[2]=-1;//p[2]==*(p+2)
}
int main(void){
int a[3]={1,2,3};
show-array(a,3)//a==&a[0]
printf("d%/n",a[2]);//输出a[2]==-1
}
5.doublt 指针指向
doublt x=6.6;//x占8个字节,一个字节==一个地址
doublt *p;
p=&x//p指向x的首地址