欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2013年10月16日 10:33:03   投稿:jingxian  
當指針作為函數(shù)的參數(shù)進行傳遞的時候,本質上還是進行的“值傳遞”,也就是復制了一個新的指向該地址的指針變量

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

下面分析這樣兩個例子;

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

程序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中的函數(shù)沒有達到交換數(shù)值的目的,而程序1.2達到了;

因為,在主函數(shù)中,主函數(shù)把str1和str2的首元素的地址,作為實參傳遞給了函數(shù)Exchange函數(shù);Exchange函數(shù)中的,p1用于接收str1的地址,p2用于接收str2的地址,這個過程是進行了值傳遞。

在程序1.1中,只是指針p1和指針p2的值進行了交換,對原來的字符串str1和str2并沒有什么影響;而在程序1.2中,是*p1和*p2的值進行了交換,而*p1就是str1它本身,*p2就是str2它本身,所以實際上是str1和str2進行了交換

相關文章

  • C語言版五子棋游戲的實現(xiàn)代碼

    C語言版五子棋游戲的實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了C語言版五子棋游戲的實現(xiàn)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++char類型和輸入輸出優(yōu)化

    C++char類型和輸入輸出優(yōu)化

    這篇文章主要介紹了C++char類型和輸入輸出優(yōu)化,char的全稱是character,也就是字符的意思。顧名思義,char類型是專門為了存儲字符而設計的。下面我們一起來看看文章的具體內(nèi)容吧
    2021-11-11
  • C++如何實現(xiàn)字符串的部分復制

    C++如何實現(xiàn)字符串的部分復制

    這篇文章主要介紹了C++如何實現(xiàn)字符串的部分復制問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • c++訪問私有private成員變量的常用方法

    c++訪問私有private成員變量的常用方法

    這篇文章主要介紹了c++訪問私有private成員變量的常用方法,需要的朋友可以參考下
    2020-08-08
  • 簡單談談C++ 頭文件系列之(bitset)

    簡單談談C++ 頭文件系列之(bitset)

    我們要使用bitset,首先需要包含頭文件bitset。和vector對象不一樣的是bitset類型對象的區(qū)別僅在其長度而不在其類型。在定義bitset的時候,要明確bitset包含了多少位,須在尖括號內(nèi)給出它的長度值。長度值必須定義為整形字面值常量或是已用常量值初始化的整型的const對象
    2017-02-02
  • C++超詳細講解數(shù)組操作符的重載

    C++超詳細講解數(shù)組操作符的重載

    C 語言提供了豐富的操作符,有:算術操作符,移位操作符,位操作符,賦值操作符,單目操作符,關系操作符,邏輯操作符,條件操作符等。接下了讓我們探究一下數(shù)組操作符的重載
    2022-06-06
  • 一文快速掌握C++雙端數(shù)組容器deque的使用

    一文快速掌握C++雙端數(shù)組容器deque的使用

    本文和大家分享的是和vector容器功能很像的容器——deque,了解deque容器的本質,使用方法以及與vector容器的不同之處,感興趣的快跟隨小編一起學習學習吧
    2022-07-07
  • 劍指offer之C語言不修改數(shù)組找出重復的數(shù)字

    劍指offer之C語言不修改數(shù)組找出重復的數(shù)字

    今天小編就為大家分享一篇關于劍指offer之C語言不修改數(shù)組找出重復的數(shù)字,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • C語言 二叉樹的鏈式存儲實例

    C語言 二叉樹的鏈式存儲實例

    本篇文章主要介紹C語言中二叉樹的鏈式存儲,這里提供了一個實例代碼進行參考,這樣對二叉樹的鏈式存儲有更深入的了解,希望能幫到學習這塊知識的同學
    2016-07-07
  • C++修煉之構造函數(shù)與析構函數(shù)

    C++修煉之構造函數(shù)與析構函數(shù)

    本章節(jié)我們將學習類的6個默認成員函數(shù)中的構造函數(shù)與析構函數(shù),并對比C語言階段的內(nèi)容來學習它們的各自的特性,感興趣的同學可以參考閱讀
    2023-03-03

最新評論