C语言 指针

#include <stdio.h>

int main(void){
	int box_1 = 3;
	int box_2 = 5;
	int box_3 = 10;
	
	int *person_1, *person_2;
	
	puts("--------盒子中糖果的数量---------"); 
	printf("第一个盒子有%d个糖果。\n", box_1);
	printf("第二个盒子有%d个糖果。\n", box_2);
	printf("第三个盒子有%d个糖果。\n", box_3);
	
	putchar('\n');
	puts("----------------------------------"); 
	puts("-----2个人第一次获取的糖果数量----"); 
	person_1 = &box_1;  // 将第一个盒子和盒子中的糖果一起给第一个人 
	person_2 = &box_3;  // 将第三个盒子和盒子中的糖果一起给第二个人 
	
	
	printf("第一个人获得%d个糖果。\n", *person_1);
	printf("第二个人获得%d个糖果。\n", *person_2);
	
	person_1 = &box_2;  // 把第一个人手中的糖果盒换成第二个糖果盒(第二个糖果盒有5个糖)。
	
	*person_2 = 20;     // 把第一个人手里的糖果盒中的糖果换成20颗糖(盒子不变,糖果数量发生改变)。 
	
	putchar('\n');
	puts("----------------------------------"); 
	puts("-----2个人第二次手中糖果数量------"); 
	printf("第一个人拥有%d个糖果。\n", *person_1);
	printf("第二个人拥有%d个糖果。\n", *person_2);
	
	putchar('\n');
	puts("----------------------------------"); 
	puts("--------盒子中糖果的数量---------"); 
	printf("第一个盒子有%d个糖果。\n", box_1);
	printf("第二个盒子有%d个糖果。\n", box_2);
	printf("第三个盒子有%d个糖果。\n", box_3);
	
	return 0; 
}

运行结果:
在这里插入图片描述
变量 person_1 和 person_2的声明中,变量名前带有 *。通过该声明定义了两个“指向int型变量的指针变量”,它们指的是int型对象。

通过以下声明定义的 person_2 不是指针变量,而是整型变量。

int *person_1, person_2;  // person_1 为指针变量,person_2 为整型变量

person_1 = &box_1;
  • person_1 和 box_1 的关系: person_1 指向 box_1 (person_1 拥有了 第一个盒子的使用权)。
  • *person_1 就等于 “person_1 指向的对象”,*person_1 的值 等于 box_1 的值。*person_1 也算是 box_1的别名。
	*person_2 = 20;  // 当20赋值给 *person_2 就等同于将20赋值于 box_3
  • 当person_1 指向 box_1时:
    *person_1如果增加或减少相应的值,box_1的数量也随之增加或减少,反之,box_1的值增加或减少,person_1的值也随之增加或减少。

注:

  • int 型变量:

    • 保存 “整数” 的盒子。
  • 指向 int 型变量的指针变量:

    • 保存“存放整数对象的地址”的盒子。
  • 当指针p的值为对象x的地址时,p指向x,*p就是x的别名。

  • 将取址运算符 & 写在Type型对象 x 前得到的 &x 为Type *型 指针,其值为 x 的地址。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值