首页 > 试题广场 >

下列函数的功能是()

[单选题]

下列函数的功能是()

void abc(int *p1, int *p2){
    int p;
    p = *p1;
    *p1 = *p2;
    *p2 = p;
}

  • 交换*p1和*p2的值
  • 交换*p1和*p2的地址
  • 正确,但无法改变*p1和*p2的值
  • 只改变了*p1的值
推荐
【正确答案】A
【解析】函数的两个参数 p1 和 p2 都是指针类型,分别指向两个 int 类型的数据,我们假设分别是 a 和 b,在函数内部,*p1 其实就是 a,*p2 就是 b。 首先将 a 的值赋值给 p,然后将 a 的值修改为 b 的值,最后将 p 的值(一开始 a 的值)赋值给 b。这样就交换了 a 和 b 两个数的值。
 
函数和指针知识点讲解】
更多C++基础专业知识讲解,点击链接即可查看
https://www.nowcoder.com/link/zxyl-cpp48
编辑于 2021-11-17 16:03:30 回复(0)
传参为NULL指针,会Crah吧,系统故障 != Crash............该题有歧义。。。
发表于 2016-12-21 17:20:25 回复(3)
#include <iostream>
using namespace std;

void abc(int *p1,int *p2){
	int p;
	p=*p1;
	*p1=*p2;
	*p2=p;
}
int main(){
	int a=5;
	int b=10;
	int *p1=&a;
	int *p2=&b;
	abc(p1,p2);
	cout<<*p1<<endl;
	cout<<*p2<<endl;
	return 0;
}
输出结果下图所示:
所以答案是正确的。
发表于 2020-10-13 12:53:33 回复(0)
这题到底是对的还是错的?
发表于 2018-07-26 10:37:50 回复(0)
本体是地址传递操作 属于交换    不是值传递  void func(int p1,int p2)未交换
发表于 2022-10-18 10:03:24 回复(0)
大家用这种写法的时候,写成int temp来代替int p就清晰了
发表于 2020-11-16 14:01:09 回复(0)
A.交换*p1和*p2的值,这句话交换的是 指针变量的值(地址)。
B.交换*p1和*p2的地址,这句话交换的是 指针变量的值的地址(地址的地址)。

发表于 2021-03-27 20:10:37 回复(0)
#include<iostream>
using namespace std;
void abc(int *p1,int *p2){
    int p;
    p=*p1;
    *p1=*p2;
    *p2=p;
}
int main(){
    int a=1,b=2;
    int *p1=&a;
    int *p2=&b;
    abc(p1,p2);
    cout<<*p1<<*p2;
    
}
发表于 2020-02-28 17:18:24 回复(0)
看一下颜色
发表于 2018-04-20 09:35:49 回复(0)
a,换值
发表于 2017-03-20 23:48:07 回复(0)
这道题如果将int p;改为int *p;呢?
都是指针的话有可能引起野指针,并不能达到数值交换。
发表于 2017-03-01 15:55:18 回复(4)
传入指针,交换指向的值
发表于 2016-12-18 14:37:41 回复(0)