1、8位參數傳遞
void Function(char x,char y,char z)
{
}
2、16位參數傳遞
void Function(short x,short y,short z)
{
}
3、32位參數傳遞
void Function(int x,int y,int z)
{
}
傳參時,無論定義char、short還是其它,內存還是按int類型去分配。反彙編時看出:編譯器實質上是按照最優本機尺寸去存儲,使用時再按char、short'、等類型去使用。
1、本機尺寸:如果本機是32位的,那麼對32位的數據支持最好,如果是64位的,那麼對64位的支持
最好.
2、編譯器遵守了這個規則:
char類型或者short類型的參數不但沒有節省空間,反而浪費了多餘的操作.
結論:整數類型的參數,一律使用int類型
參數傳遞的本質:將上層函數的變量,或者表達式的值“複製一份”,傳遞給下層函數.
總結:
1、小於32位的局部變量,空間在分配時,按32位分配.2、使用時按實際的寬度使用.
3、不要定義char/short類型的局部變量.
4、參數與局部變量沒有本質區別,都是局部變量,都在棧中分配.
5、完全可以把參數當初局部變量使用