文章目录
- 一.取指针和解指针
- 二.为什么用指针?
指针存的是地址
一.取指针和解指针
int main()
{int a=0;int * p ;//声明int类型的**指针**char * m ;//声明char类型的**指针**&a;//a是个变量,&a,把地址取出来p=&a;//p指针存的a的地址printf("%d",*p);//解指针,把指针的值复原出来
}
&:取指针
*:解指针
二.为什么用指针?
比如不知道a但想把a的值修改掉
p=&a;//p指针存a地址
*p=5;//*p:a对应的值
printf("%d",a);//输出a也是5
对*p做出的任何改变都会作用到a上(原来的位置)
void swap(int * a,int * b)//*在定义变量时代表指针的意思,指针变量
{int t=*a;*a=*b;*b=t;
} //只有对地址进行修改才会作用到全局变量中
int main()
{int a=2;int b=8;printf("%d %d",a,b);swap(&a,&b);//取指针进去,时刻注意是指针类型还是变量类型printf("%d %d",a,b);return 0;
}
int c[3]={1,2,3};//printf("%d",&c);//错误,因为c本身就是地址printf("%d",c);//第一个的地址地址,指针常量,不能修改*p=a;//可以//c=&a;不可以,常量不可以修改,c是常量
printf("%d",*c);//第一个数
*(c+1)//指向下一个地址,输出2,加以为了移位,解指针为了获得他的值
*(c+1)和 c[1] 价值一样
//定义一个指针
int * p=c+1;//p:指针 *p:取数
printf("%d",*p);//等同于p[0]
//第二个数
对指针的任何运算都起到移位的作用,以自己的类型为单位移动,int型,char型
数组的数组名和指针的唯一区别:
数组名不能改,不能把它赋成别的值
指针可以赋成别的值