解惑——用指针交换两个数字时所犯的错误

以前经常刚开始写c的时候经常犯错,想想也很有意思,最近正好趁着这个时光做了一下总结。c中指针的使用时非常重要的,但是无论是什么语言,都要首先树立内存空间这一概念,这样的话会很容易找到不同语言之间的相似点。首先我们要明白,一个内存单元的地址就叫做指针。那什么是内存单元呢?一般来说我们把存储器中的一个字节成为一个内存单元,不同数据所占的内存单元数不等,比如说char占用一个内存单元。为了让计算机能够找到某个内存单元,必须为每个内存单元进行编号,这里的编号就是我们所说的地址,也就是c中提到的指针。现在我们明白,内存单元其实由内存单元地址和内存单元内容共同构成。举个例子来说明这种关系,一个房屋有自己的地址(比如说天使街111号)是指针,而房屋里人就相当于内存单元的内容。当我们寻找某个人时,我们先找到他的房子即可。在c语言中允许使用一个变量来存放指针,这种变量成为指针变量。要注意的是,一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。除此<之外不要忘记,指针实际上也是一个地址。在c中,我们可能遇到交换个数值得情况。这里也许会遇到一些问题。见代码:

void printScreen(int a, int b){
	printf("  the a is %d\n", a);
	printf("  the b is %d\n", b);
	
}

/*
通过修改指针中的值可以正确交换两个数
*/
void swap(int* p, int* s){
	int temp = *p;
	*p =*s;
	*s = temp;
}
/*
通过交换两个地址不能正确交换两个数
*/
void swap1(int* a, int* b){
	int* temp &
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值