黑马程序员技术交流社区

标题: C和C#的类比,关于C#中函数参数入栈顺序,困惑 [打印本页]

作者: 荣右铭    时间: 2013-10-7 17:37
标题: C和C#的类比,关于C#中函数参数入栈顺序,困惑
本帖最后由 荣右铭 于 2013-10-14 19:04 编辑

代码如下:   
static void Main(string[] args)
        {

           func(Console.ReadLine(),Console.ReadLine());
           Console.ReadKey();
        }
        static void func(string a, string b)
        {
            Console.WriteLine("{0},{1}",a,b);
           }
从流中读取两个字符串交给a和b,正常输出;
我们再写一段C语言中相同功能的代码:
void func(char *a,char *b){
                printf("%s %s",a,b);
        }
int main(void){
        char *a,*b;
        a=malloc(64);
        b=malloc(64);//
        func(gets(a),gets(b));
        return 0;
}

这时候的输出却是和输入相反的,比如我们输入
hello
world,
输出的却是
world
hello
这里我就一个困惑,请问都是从流中读取字符串,这种输入和输出相反的现象,是不是由于函数参数进栈的顺序不同造成的?
如果是,那么两种语言的参数进栈方式又有什么不同。

作者: SunshineGirl    时间: 2013-10-9 09:44
亲,没有同学给你回答你提问的问题呀,不能设置成已解决呀。
作者: 追溯客    时间: 2013-10-14 17:04

楼主你好,如果你的问题已自行解决请解释,请及时把分类设为已解决,黑马有你更精彩!
作者: 荣右铭    时间: 2013-10-14 19:02
估计这个问题太深,实在没人回答,版主你批准我把它结了吧。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2