0
点赞
收藏
分享

微信扫一扫

JAVA地狱级笑话

探头的新芽 2024-10-30 阅读 16

文章目录


指针存的是地址

一.取指针和解指针

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型
数组的数组名和指针的唯一区别:
数组名不能改,不能把它赋成别的值
指针可以赋成别的值

举报

相关推荐

0 条评论