按值傳遞:是把實參的值賦值給行參,相當於copy。那麼對行參的修改,不會影響實參的值 。
按址傳遞: 是傳值的一種特殊方式,只是他傳遞的是位址,不是普通的賦值,那麼傳位址以後,實參和行參都 指向同乙個物件,因此對形參的修改會影響到實參。
#include
#include
void malloc_memory (char *ptr , int size)
int main(int argc ,char **argv)
執行結果: segmentation fault (core dumped)
//段錯誤
解決辦法如下:
修改程式(2種方法):
1,利用指標函式返回乙個位址
宣告函式: void *malloc_memory2(int size)
在main函式裡,
char *ptr2 = null;
prt2 = malloc_memory2(10);
//操作位址來控制ptr2
....
2,若堅持利用引數
宣告函式 void malloc_memory(char **ptr , int size);
在main函式裡
char *ptr3 = null;
malloc_memory3(&ptr3 , 10);
//按址傳遞。把ptr3的位址傳過去,直接對ptr3記憶體進行賦值。
深拷貝和淺拷貝,按值傳遞,按址傳遞
一 深拷貝和淺拷貝 js中的兩種變數型別,即值型別 數值 布林值 null undefined 和引用型別 物件 陣列 函式 深拷貝和淺拷貝只針對引用型別。感覺上淺拷貝就是引用,深拷貝是新建。宗旨就是新生成的物件不改變源資料,不管怎樣實現,都可以理解為深拷貝。深拷貝方式一 變成按值傳遞 深拷貝方式二...
C和C 中的按值傳遞,按址傳遞的區別及其使用方法
include using namespace std 體會下列 即可,僅是個人理解,有誤之處還請各位前輩多多指教 void change1 int a void change1 int a void change2 int p1 void change2 int p1 此時 p1 當成指標,此時對...
C 值傳遞和按引用傳遞
知識點 值型別和引用型別 為值型別,據 對於引用型別來說,棧中儲存的是堆中物件的位址 值傳遞和引用傳遞 對於值傳遞,傳遞的是棧中儲存的資料 對於引用傳遞。傳遞的是棧本身的位址 先看一下值傳遞 傳遞值型別和引用型別 class program 值型別的值傳遞 static void d1 int m ...