为什么要用指针
特定地址存放特定数据
int a;
a=10;
int *p;
p=&a;
printf("a addres is %p\n",p); //a的地址系统随机分配
int *p2=(int *)0x000000000062FE0C; //常用于ARM架构 裸机开发
*p2=10;
printf("在内存%p位置,存放着%d\n",p2,*p2);
//volatile int *p2=( volatile int *)0x0060fef0; //类型修饰符 从内存访问
指针作为函数参数
典例:
void swap(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
}
int main()
{
int a=5;
int b=10;
swap(a,b);
printf("a=%d\n",a);
printf("a=%d\n",b);
return 0;
}
结果:a,b不交换 为什么???
从地址理解:
引入
void add(int *a)
{
*a=*a+1;
printf("in function:%d\n",*a);
}
int main()
{
int a=10;
add(&a);
printf("in main:a=%d",a);
}
正确交换函数:
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
从地址解释: