函数中,指针的传递和变量的传递

关于函数数的参数传递,变量以及指针,容易混淆
下面通过代码来进行了解学习。

#include<stdio.h>
#include<Windows.h>

void Clm(int &d, int *&p)
{
	printf("Clm(int &d, int *&p),int &d表示传入d的值,int *&p传入的是p的值也就是a的地址");
	printf("传出d传进的值:%d\n", d);
	d = 888;
	printf("传出d修改的值:%d\n\n", d);

	printf("&p  传出p的自身地址:\t\t\t%d\n", &p);
	printf("*&p 传出p的自身值(p中存储的为a的地址):%p\n", *&p);
	printf("p   传出赋值后p的地址(即是a的地址):\t%d\n", p);
	printf("*p  传出p的值(即是a的值):\t\t%d\n", *p);
	printf("&*p 传出p的值的地址:\t\t\t%p\n", &*p);
	
}

int main()
{
	int a, d;
	a = 999;
	d = 0;
	int *p=0;
	printf("p   未赋值前p的值:%d\n", p);
	printf("&p  未赋值前p的地址:%d\n", &p);
	printf("*&p 未赋值前指向p的地址的值:%d\n\n", *&p);

	p = &a;//将a的地址赋给p

	printf("&a  传出a的地址:%p\n", &a);
	printf("a   传出a的值:%d\n\n", a);
	printf("可以理解为p将地址实体化,p就是a的地址值\n\n");
	printf("p   赋值后传出p的值(此时为a的地址值):%d\n", p);
	printf("*p  赋值后传出指向p存储的地址值的值(此时为a的值):%d\n", *p);
	printf("&p  传出p身的地址:%p\n\n", &p);

	printf("-------------进入函数----------\n");
	Clm(d, p);
	printf("--------------出函数-----------\n");

	printf("\nd传出d修改的值:%d\n\n", d);

	system("Pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值