倆程式結果就不一樣呢

uj5u.com熱心網友回復:
很簡單,你這個改了不應該你改的記憶體。兩個都是。uj5u.com熱心網友回復:
區別大了char *a = "kdkdlkddk" // 這個字串是const char * 不可能更改
char a[] // 這個是陣列,內容隨便改
uj5u.com熱心網友回復:
打錯了,第一個你要判斷大小,拷貝的時候不能目標一定要比源大,否則還是要報錯。uj5u.com熱心網友回復:
那第一個char *from=a 為啥就可以了呢uj5u.com熱心網友回復:
第一個和第二個的區別只在[]和"". char *from=a這句話不是根源uj5u.com熱心網友回復:
第一個 char a[]=“xxxx”;char *from=a;第二個 char a*=“xxxx”; 第一個可以得到正確結果第二個不可以
uj5u.com熱心網友回復:
第一個,那個是初始化, 把那個字串的內容復制了一份放到陣列里面。 陣列記憶體不是在只讀區的,讀寫都沒有問題第二個,那個同樣是初始化, 但是是把只讀緩沖區的地址給予了那兩個char*變數,這個時候操作寫是在只讀記憶體上,無法寫成功
uj5u.com熱心網友回復:
你自己試試, a[1] = 'X'; b[1] = 'y';你可以看到,第一種寫法, 可以更改生效; 第二種寫法,估計就是一個崩潰的提示了
uj5u.com熱心網友回復:
明白了 ,感謝uj5u.com熱心網友回復:
明白了 感謝轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/119918.html
標籤:C語言
