C中printf为什么可以写入多个参数?
C语言中既然没有函数重载,为什么printf和csanf可以有多个参数? 大致是第一个参数是固定的,后边的称之为可变参数,可变参数被解析为一个字符串,然后对这个字符串中的参数进行提取。。http://c.biancheng.net/view/344.html 小甲鱼后面的视频中好像讲过这个,具体哪个忘记了你自己看看视频 我叫MD 发表于 2019-7-1 15:23
小甲鱼后面的视频中好像讲过这个,具体哪个忘记了你自己看看视频
我也记得谈过但是忘了 newu 发表于 2019-7-1 14:24
大致是第一个参数是固定的,后边的称之为可变参数,可变参数被解析为一个字符串,然后对这个字符串中的参数 ...
有点复杂,没看懂 用的是...可变参数,直接从栈中取参数。 printf 调用协定是cdecl 调用者自己恢复栈平衡 你谁调用的printf传了多少个参数是知道的所以add esp,X其中X你自己是知道的然后printf函数里 根据第二个参数字符串 去解析需要用到后面多少个参数 然后自己用栈里取 表示printf第一个参数 代表printf第三个参数 代表printf第四个参数 以此类推实现变长 在c语言中,编译器在编译后在库中的名字为_function,在c++中,编译器在编译后在库中的名字为_function_int_int。重载本质上还是函数重载,而printf与scanf也是函数,相当于函数调用函数。一个函数多次调用一个函数,但每次的类型不同,不相当于重载吗? 嘻嘻嘻,谢谢将我设置为最佳答案,鱼c有你更精彩
页:
[1]