C语言学习笔记(13指针)

1、指针经典程序交换两个数字

#include <stdio.h>
#include <stdlib.h>
void Swap1(int a,int b)
{
	//交换的是形参a,b的值
	int t;
	t=a;
    a=b;
	b=t;
}
void Swap2(int* p,int* q)
{	
	int* t;
	t=p;
	p=q;
	q=t;
	//执行完后p保存的是b的地址,q保存的是a的地址,
	//但是主函数中的a,b的地址始终没有变,值也没有变化。
	//例如:a的地址是1000H,存放的值是3,b的地址是2000H,存放的值是5,
	//调用Swap2函数,把a的地址1000H赋给p,b的地址2000H赋给q,
	//经过函数执行后:p保存了b的地址(p=2000H),
    //q保存了a的地址(q=1000H),而对主函数中的a,b并无影响.
}
void Swap3(int* p,int* q)
{
	//p指向a的地址,所以*p就是a的值,q指向b的地址,所以*q就是b的值
	//p是int*类型,*p就是int类型
	int t;
	t=*p;
	*p=*q;
	*q=t;
}
int main(void)
{
	int a=3;
	int b=5;
	//Swap1(a,b);//输出的是3,5,不能实现互换
	//Swap2(&a,&b);//输出的还是3,5,不能实现互换
	Swap3(&a,&b);//实现了互换,输出是5,3
	printf("a=%d, b=%d\n",a,b);
	system("pause");
	return 0;
}


 2、*号的含义

3、如何通过被调函数修改主调函数普通变量的值

#include <stdio.h>
#include <stdlib.h>
void f(int* p,int* q)
{
	//p指向a的地址,*p就是a的值,改变*p的值就是改变a的值
	*p=1;
	*q=2;
}
int main(void)
{
	int a=3;
	int b=5;
	f(&a,&b);//把a,b的值都给修改了
	printf("a=%d, b=%d\n",a,b);
	system("pause");
	return 0;
}


 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值