為什麼在這段C 程式用這種方式寫出錯呢

2022-06-29 12:07:03 字數 714 閱讀 6850

1樓:匿名使用者

一、calloc()函式返回值為void *,因此,要進行強制轉換才合理。轉換成什麼型別,就要看p是什麼型別,所以,如果是字元型就要寫成char *.

二、*++p=arr[2]; 相當於 p= p+1 ; *p=arr[2];

而*p++=arr[2] ; 相當於*p=arr[2]; p=p+1; 這樣p就指向了下一位,不是原接收資料的位置了。你輸出的0,只是一個記憶體隨機值。

2樓:寒寒家

calloc函式預設的是返回的void *型別的指標,而對於int *型別的p,就需要對calloc的返回值做強制型別轉換。

*(p++) = arr[2]; 其實是 *p = arra[2]; p = p + 1; 其實是arr[0]被修改為了2了,而不是a[1]

*++p = arr[2]其實是 p = p + 1; *p = arra[2] 這裡其實是把arr[1]修改為了2.(這兩個的區別是那那兩步的運算順序不同)

3樓:文正

賦值的返回值加不加強制型別轉換都可以.因為malloc等的函式引數或返回值都是void型的指標.這是不會報錯的.但是你想加上型別轉換也對.

轉換的型別就在等號左邊的型別了.

*++p和, *(p++)的區別還是前自加與後自加的區別.

前自加是先自加, 再取值.

而後自加是先取值, 再自加.

c語言的這段程式C語言中這段程式是什麼意思?

printf函式需要包含的標頭檔案 include 程式的主函式入口 void main printf n for i 0 i 4 i 每當第一層迴圈執行完一次後就執行一次printf n 換行 printf n 最後的執行結果 關鍵點是迴圈巢狀 i 0時 j從0開始 每次執行迴圈體後j 1 迴圈1...

求大神看我編的這段c語言程式為什麼無法得到預期的效果(加解密

如果你要在輸入的時候加空格的話,那麼你的格式化輸入語句裡應該也加上空格 用s 寫程式,手機簡訊驗證碼功能出bug了,求大神指導!5 出現什麼問題。你也沒說呀!報什麼錯都沒有說別人怎麼好回答 c語言程式設計 學生成績管理系統設計的程式設計 我建議你去找本這方面的書。可以到你學校的圖書館借或者是去買。就...

用什麼軟體可以編譯C程式,C 程式設計用什麼軟體進行編譯 連結和執行?

編譯c 用微軟出的visual studio 2003,2005,2008都可以 因為c 就是微軟出的所以用他的工具肯定是最好的,至於其他的有什麼支援編譯c 的工具我就不是很清楚了,用上面肯定是首選 網上可以下,建議用visual studio2005一是比較成熟,vs2008剛出來不久,正式版的要...