值传递&引用传递&指针传递的理解

WIN32控制台应用程序代码&注释:

#include<stdio.h>
#include "malloc.h"

int a = 0;

void foo(int b){b = 5;}

void foo1(int b){a = b;}

void foo2(int &b){b = 5;}

void bar(int *p) { *p = 5;}

void bar1(int *p){int c = 5;p = &c;}

void bar2(int **b){int c = 5;*b = &c;}

int main()
{
	//值传递 - 变量操作
	int b = 0;

	foo(b);//变量作用域不同 值不变
	printf("foo -- %d\n", b);

	int c = 5;
	foo1(c);//变量作用域相同 值改变
	printf("foo1 -- %d\n", a);
	//引用传递 
	b = 0;
	foo2(b);//c语言不包含 值改变
	printf("foo2 -- %d\n", b);

	//指针传递 - 变量操作
	b = 0;
	int *p;
	p = &b;
	bar(p);
	//参数p会创建_p指针,指向同一块内存,
	//_p的内存变量改变,p也会改变 值改变
	printf("bar -- %d\n", *p);

	//指针传递 - 指针操作
	b = 0;
	p = &b;
	bar1(p);
	//参数p会创建_p指针,指向同一块内存,
	//_p的指针改变,内存改变,p的指针不变,指向的内存不会改变 值不变
	printf("bar1 -- %d\n", *p);

	b = 0;
	p = &b;
	bar2(&p);
	//参数p会创建_p二级指针,指向同一块内存-一级指针,
	//_p的内存一级指针指向改变,内存改变,p的二级指针不变,p的一级指针指向改变,指向的内存改变 值改变
	printf("bar2 -- %d\n", *p);

	getchar();
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_bill

老板大气!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值