
这有点复杂 我可解释 但我大概你看不懂
printf是不定参数数组
第一庚 会按照char*类型入栈

耗参数 你源就噪栈
然狠第一庚的肛制字符串
从栈里面积据 进行输 />

第一竛tf
入栈了一 和 一竢*(数组char[3]隐式转换为指蟏的char*)
printf在执行的时 />解?d 从栈里读取一 然 />解?s 从栈里读取一竢*

然衡竢*指定的内存地址开始根据char输齿 直到0'
这竢*如上面所说指蟏 所以输抽b的内容
第一竛tf的行为就是这样没哪个问题

第二竛tf
入栈了一竢uct student 展开来说就是 一 和 一竢[3] (暂不考虑内存对齐)
printf在执行的时 />解printf输出字符数组?d 从栈里读取一 然 />解printf输出字符数组?s printf会从栈上面读取一竢* 但是入栈的数据并没有char* 而是一竢[3]
这里具体说一下读取一竢*是哪个意思
假设char* 是4岗 读取一竢* 意思是从栈上面读取4岗的数据 并把读取衬数据谆竢*解 />现在栈上面只有char[3] 读取4岗的数据 会导致变量越界 并且把调用衬数据谆竢*解蝦 />就是说b[0]議ar*的第一岗的数据 b[1]議ar*第二岗的数据 .......
这样组合硆* 然赫组合衬char*输雏串
这其实是胡转了
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-133091-1.html
#吴亦凡#Iamwaitingforyou
老是用这种下三滥的手段来打擦边球没有多大意思
他的意思他是有钱人