经典指数          
原因
2597
浏览数
0
收藏数
 

如下C++程序
int i=0x22222222; 
char szTest[]=”aaaa”;  //a的ascii码为0x61 
func(I, szTest);	//函数原型为void func(int a,char *sz); 
请问刚进入func函数时,参数在栈中的形式可能为 (左侧为地址,右侧为数据—)
  • 0x0013FCF0 0x61616161 0x0013FCF4 0x22222222 0x0013FCF8 0x00000000
  • 0x0013FCF0 0x22222222 0x0013FCF4 0x0013FCF8 0x0013FCF8 0x61616161
  • 0x0013FCF0 0x22222222 0x0013FCF4 0x61616161 0x0013FCF8 0x00000000
  • 0x0013FCF0 0x0013FCF8 0x0013FCF4 0x22222222 0x0013FCF8 0x61616161

     举报   纠错  
 
切换
1 个答案

选D。  1,对于x86,栈的增长方向是从大地址到小地址

            2,对于函数调用,参数的入栈顺序是从右向左

            3,函数调用入栈顺序是  右边参数-->左边参数-->函数返回地址

符合的只有D

C明显不对,即使栈增长方向是从小地址到大地址,0x00000000也明显不是函数返回地址

 
切换
撰写答案