当前位置:首页 > C++目录 > 正文内容

指针(三):指针与函数

亿万年的星光5年前 (2021-08-10)C++目录1665

1.交换的例子

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
void swap(int x, int y){
	int a=x;
	x=y;
	y=a;
	cout<<"函数内部"<<x<<" "<<y<<endl; // 4 3
}
int main() {
	int a=3,b=4;
	swap(a,b);
	cout<<a<<" "<<b<<endl;  // 3 4
	return 0;
}

上面的程序不能完成交换

而下面的程序可以完成交换

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
void swap(int &x, int &y){
	int a=x;
	x=y;
	y=a;
	cout<<"函数内部"<<x<<" "<<y<<endl; // 4 3
}
int main() {
	int a=3,b=4;
	swap(a,b);
	cout<<a<<" "<<b<<endl;  // 4 3
	return 0;
}

2.指针作为函数参数

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
void swap(int *x, int *y){
	int t =*x;
	*x= *y;
	*y=t;
	cout<<*x<<" "<<*y<<endl; // 4 3
}
int main() {
	int a=3,b=4;
	swap(&a,&b);
	cout<<a<<" "<<b<<endl;  // 4 3
	return 0;
}

上面的这样的例子可以完成交换。

下面的例子可以直接修改原来数据的值

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
void swap(int *x, int *y){
	*x=5; 
}
int main() {
	int a=3,b=4;
	swap(&a,&b);
	cout<<a<<" "<<b<<endl;  //5 4
	return 0;
}



扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

取模运算总结——数论

编程竞赛有相当一部分题目的结果过于庞大,整数类型无法存储,往往只要求输出取模的结果。例如(a+b)%p,若a+b的结果我们存储不了,再去取模,结果显然不对,我们为了防止溢出,可以先分别对a取模,b取模...

排序算法中的一些分类

排序算法中的一些分类

一、比较和非比较的排序二、时间复杂度和稳定性如何界定一个排序算法是否是稳定的?假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=...

CSP复赛必备,时间与空间估算

CSP复赛必备,时间与空间估算

一、时间估算       在竞赛环境中,一般运行程序的时间是1s。这要求我们尽量不要循环太多次数,一般情况下,建议将时间复杂度控制在10^8以内。 ...

【题解】小X玩游戏

【题目描述】小X喜欢玩游戏。  这天,小X觉得传统的游戏都玩腻了,自己随手在草稿纸上画了一行N个格子作为棋盘, 制定了如下规则:格子从左到右依次编号为1到N,玩家初始位于格子1,初...

图的访问与存储—临接表

图的访问与存储—临接表

        在图论中,邻接表(Adjacency List) 是表示图(包括无向图、有向图、带权图)的一种高效数据结构,核心思想是为图中的每个顶点...

2021 年青岛市程序设计竞赛试题(小学组)决赛

2021 年青岛市程序设计竞赛试题(小学组)决赛

1.方程求解【描述】输入正整数 a,b,c。求有多少组 x 和 y 满足 a*x+b*y=c 。x 和 y 都是非负整数。【输入】一行,包含三个正整数 a,b,c,两个整数之间用单个空格隔开。【输出】...