這是劍指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);