&和*操作符简单介绍(新手易懂)

&和*操作符

&和*都是单目操作符

&:取地址符

*:间接访问操作符(解引用操作符)

&用于取出想要变量的地址

我们通过以下代码来看看&以及*的作用。

int main()
{
	int a = 10;
	int * p = &a;
	return 0;
}

我们定义了一个整型变量a,并给他赋值为10;又定义了一个变量p用来存放a的地址,

int * p = &a;

既然p是用来存放地址的,那么p就应该是一个指针变量,“*”即代表p是一个指针,前面的int说明变量p指向的类型是整型,“int *”合起来就是p的类型。

我们再来看下面的应用:

int main()
{
	int a = 10;
	int * p = &a;
	int b = *p;
	*p = 20; //解引用操作符
	printf("a=%d\n", a);
	return 0;
}

当p是一个指针变量时,在其前面加上一个*,这个*表示解引用操作符。

我们先来看这行代码:int b = *p;

就是创建一个变量b,使他的值等于p指向的空间里的内容,也就是a的值,这时,b的值就是10。这里的*p,用的是p指向的内容中的

再来看这行代码:*p = 20;

p里面存的是a的地址,*p就是通过a的地址找到a,然后把a的内容变为20。这里的*p,用的是p指向的内容的空间。

这里的*p,就可以提到左值、右值的概念了,简单的说,

左值——空间

右值——空间中的内容

数组也可以取地址

我们来看看

int main()
{
	int a = 10;
	int arr[10] = { 0 };
	arr;//数组首元素的地址
	&arr[0];//数组首元素的地址
	&arr[9];//取出的是第10个元素的地址
	&arr;//取出数组的地址
	return 0;
}

另外还要知道

数组名就是首元素的地址
有2个例外:

  1. sizeof(数组名),这里的数组名表示整个数组,sizeof(数组名)计算的是整个数组的大小
  2. &数组名,这里的数组名表示整个数组,取出的是数组的地址

以上就是我总结的&和*操作符的用法,希望对大家有帮助。

欢迎指教指点。

我的主页还有其他文章,欢迎和我一起学习。

点赞👍+关注

让我们一起学习一起成长!
在这里插入图片描述

  • 78
    点赞
  • 166
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值