国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++指針作為函數的參數進行傳遞時需要注意的一些問題

2020-01-26 15:43:53
字體:
來源:轉載
供稿:網友

只有在被調函數中,對指針進行引用操作,才可以達到不需要返回值,就對指針指向的變量做出相應的變化。

下面分析這樣兩個例子;

要求:定義并初始化兩個字符串變量,并執行輸出操作;然后調用函數使這兩個變量的值交換,并且要求被調函數的傳值通過傳遞指針來實現。

程序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;
}

輸出結果:


程序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;
}

輸出結果:


分析:

通過這兩個程序的結果對比,程序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進行了交換

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五华县| 南康市| 扶沟县| 洛南县| 广德县| 上杭县| 东宁县| 深泽县| 卓尼县| 合山市| 喀喇沁旗| 秦安县| 察哈| 高尔夫| 大同县| 吕梁市| 乌兰浩特市| 镇雄县| 河间市| 阿尔山市| 共和县| 崇文区| 利川市| 湟源县| 龙游县| 依兰县| 板桥市| 桂东县| 射阳县| 尼玛县| 永定县| 扶沟县| 山阳县| 广南县| 涞源县| 改则县| 茌平县| 喀喇| 襄垣县| 公主岭市| 贵定县|