天天看點

**指針的指針,引用

這是劍指offer表示數值的字元串

為什麼後面那兩個函數要用指針的指針?而不是指針就行了?

如果隻傳一個*,函數結束後,string的指針的值并不會發生變化,依舊是傳進去之前那個值。因為傳*,相當于copy一個值給他,而并不會改變原來的值,隻有傳給他位址,才能真正改變原來的值。這個和平時用的int、float的引用是一樣的。

引用的寫法:

1.int a = 5;

   int &b = a;

   改變b,a也會改變

   如果你直接int b = a,改變b不會改變a

   int &b = a是b也指向a的位置,int b = a,b要單獨開個空間,是以b變化不會影響a,相當于copy給b

   深copy就是int b = a,因為兩個開辟了兩個空間,淺拷貝就是int &b = a,因為兩個共享一個空間

   這裡的函數如果寫成*,就相當于把string這個指針的值copy給函數,也就是深拷貝

2.int c = 5;

   void find_depth(int &depth){};

 find_depth(c);