手机
当前位置:查字典教程网 >编程开发 >C语言 >C++指针作为函数的参数进行传递时需要注意的一些问题
C++指针作为函数的参数进行传递时需要注意的一些问题
摘要:只有在被调函数中,对指针进行引用操作,才可以达到不需要返回值,就对指针指向的变量做出相应的变化。下面分析这样两个例子;要求:定义并初始化两个...

只有在被调函数中,对指针进行引用操作,才可以达到不需要返回值,就对指针指向的变量做出相应的变化。

下面分析这样两个例子;

要求:定义并初始化两个字符串变量,并执行输出操作;然后调用函数使这两个变量的值交换,并且要求被调函数的传值通过传递指针来实现。

程序1.1

复制代码 代码如下:

#include<iostream>

#include<string>

using namespace std;

int main(){

string str1="I love China!",str2="I love JiNan!";

void Exchange(string *p1,string *p2);

cout<<"str1: "<<str1<<endl;

cout<<"str2: "<<str2<<endl;

Exchange(&str1,&str2);

cout<<"str1: "<<str1<<endl;

cout<<"str2: "<<str2<<endl;

return 0;

}

void Exchange(string *p1,string *p2){

string *p3;

p3=p1;

p1=p2;

p2=p3;

}

输出结果:

C++指针作为函数的参数进行传递时需要注意的一些问题1

程序1.2

复制代码 代码如下:

#include<iostream>

#include<string>

using namespace std;

int main(){

string str1="I love China!",str2="I love JiNan!";

void Exchange(string *p1,string *p2);

cout<<"str1: "<<str1<<endl;

cout<<"str2: "<<str2<<endl;

Exchange(&str1,&str2);

cout<<"str1: "<<str1<<endl;

cout<<"str2: "<<str2<<endl;

cout<<endl;

return 0;

}

void Exchange(string *p1,string *p2){

string p3;

p3=*p1;

*p1=*p2;

*p2=p3;

}

输出结果:

C++指针作为函数的参数进行传递时需要注意的一些问题2

分析:

通过这两个程序的结果对比,程序1.1中的函数没有达到交换数值的目的,而程序1.2达到了;

因为,在主函数中,主函数把str1和str2的首元素的地址,作为实参传递给了函数Exchange函数;Exchange函数中的,p1用于接收str1的地址,p2用于接收str2的地址,这个过程是进行了值传递。

在程序1.1中,只是指针p1和指针p2的值进行了交换,对原来的字符串str1和str2并没有什么影响;而在程序1.2中,是*p1和*p2的值进行了交换,而*p1就是str1它本身,*p2就是str2它本身,所以实际上是str1和str2进行了交换

【C++指针作为函数的参数进行传递时需要注意的一些问题】相关文章:

C++中拷贝构造函数的总结详解

c++ 成员函数与非成员函数的抉择

C++中的异或运算符^的使用方法

关于C语言中参数的传值问题

关于STL中的map容器的一些总结

C++ 冒泡排序数据结构、算法及改进算法

C++指向类成员函数的指针详细解析

C++中函数的默认参数详细解析

深入解析函数指针与返回函数的指针

C++用指针变量作为函数的参数接受数组的值的问题详细总结

精品推荐
分类导航