1. 程式人生 > >用指標作為引數傳值是不是更節省記憶體?(c/c++/golang)

用指標作為引數傳值是不是更節省記憶體?(c/c++/golang)

不一定。
當引數傳入到函式中時,函式會在棧空間中,為函式引數開闢對應的記憶體。
如果傳入的是指標,那麼系統會為該引數分配指標型別大小的空間,比如32位機就是4個位元組。
而傳入的變數,分配空間大小就是實際佔用的大小。比如char就是1個位元組,short就是2個位元組,double就是8個位元組等。
可以看到,指標和實際變數比較佔用空間並沒有絕對的大小關係。如果引數是字元型char,那麼直接用char比用指標更省記憶體。
所以具體何種方式更省記憶體,還需要看引數真正的sizeof值才可以。

 

 

 

  1. 節省儲存,因為不用產生實際引數的函式區域性副本

  2. 減輕函式呼叫的時間開銷,因為不用呼叫拷貝複製等建構函式

  3. 允許函式有能力修改實際引數

 

但也要看傳進來的值是什麼型別。在32位機器中一般指標佔四個位元組,如果你傳入的是小於四個位元組的型別,當然不會比直接值傳遞節省記憶體。