雷火电竞-中国电竞赛事及体育赛事平台

歡迎來(lái)到入門教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

C++指針作為函數(shù)的參數(shù)進(jìn)行傳遞時(shí)需要注意的一些問(wèn)題

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊:

只有在被調(diào)函數(shù)中,對(duì)指針進(jìn)行引用操作,才可以達(dá)到不需要返回值,就對(duì)指針指向的變量做出相應(yīng)的變化。

下面分析這樣兩個(gè)例子;

要求:定義并初始化兩個(gè)字符串變量,并執(zhí)行輸出操作;然后調(diào)用函數(shù)使這兩個(gè)變量的值交換,并且要求被調(diào)函數(shù)的傳值通過(guò)傳遞指針來(lái)實(shí)現(xiàn)。

程序1.1
復(fù)制代碼 代碼如下:

#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;
}

輸出結(jié)果:


程序1.2
復(fù)制代碼 代碼如下:

#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;
}

輸出結(jié)果:


分析:

通過(guò)這兩個(gè)程序的結(jié)果對(duì)比,程序1.1中的函數(shù)沒(méi)有達(dá)到交換數(shù)值的目的,而程序1.2達(dá)到了;

因?yàn)椋谥骱瘮?shù)中,主函數(shù)把str1和str2的首元素的地址,作為實(shí)參傳遞給了函數(shù)Exchange函數(shù);Exchange函數(shù)中的,p1用于接收str1的地址,p2用于接收str2的地址,這個(gè)過(guò)程是進(jìn)行了值傳遞。

在程序1.1中,只是指針p1和指針p2的值進(jìn)行了交換,對(duì)原來(lái)的字符串str1和str2并沒(méi)有什么影響;而在程序1.2中,是*p1和*p2的值進(jìn)行了交換,而*p1就是str1它本身,*p2就是str2它本身,所以實(shí)際上是str1和str2進(jìn)行了交換

上一篇:C語(yǔ)言中const,volatile,restrict的用法總結(jié)

欄    目:C語(yǔ)言

下一篇:C語(yǔ)言main函數(shù)的參數(shù)及其返回值詳細(xì)解析

本文標(biāo)題:C++指針作為函數(shù)的參數(shù)進(jìn)行傳遞時(shí)需要注意的一些問(wèn)題

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/3937.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有