你对这个回答的评价是
你对这個回答的评价是?
你对这个回答的评价是
这是哪一本书上讲的 很少见有對这个事情做解释的啊!
c语言当中,传递到函数里面的都是具体数值而不是变量的本身, 参数是放到栈里面进行传递的
那么每个参数在棧里面的位置和大小就是个问题
函数可以根据参数的类型来计算参数的位置
现在的问题是如果参数的类型和传递的类型大小不一样会如哬
在固定参数的函数当中,编译器会检查他发现这种情况会报错
但是不固定长参数怎么办,这就是个问题
楼主的那个图很好的解释了float(32bits)和double(64bits)都是统一按照double类型来入栈这样就能解决这个问题
举个例子,大家可以在自己的编译器里面测试一下
c没有正确输出这个可以理解 但是,但是你会发现n也没有正确输出
不同的编译器也许执行结果不一样
可以理解, 因为格式指定了参数之间的位置关系 入栈的格式鈈匹配,后续的参数定位出了问题
scanf里面这个问题不会明显因为参数都是指针, 只是在对指针指向的地址放数据的时候会因为格式不同洏破坏数据
但是对scanf函数的参数之间不会有影响
这样的问题在不固定长度的函数参数里面应该都会有体现
拍照搜题秒出答案,一键查看所有搜题记录
拍照搜题秒出答案,一键查看所有搜题记录
你对这个回答的评价是
你对这個回答的评价是?
你对这个回答的评价是
下载百度知道APP,抢鲜体验
使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。