这里看到的
main(a)
{
printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);
}
下面是19楼的回复:
a是int,main函数的原形不是main(int, char **)么,虽然我们一般写成main(int argc, char **argv).但实际上形参的名字是不重要的.所以写成main(a)也可以.理论上应该是main(int a)但老式的C写法可以不指定形参类型,默认为int.
a=字符串的作用是把字符串常量的地址赋值给a,因为a是int类型的,所以这中间有个类型转换.然后a中存的就是字符串的地址了,可以a当成一个指向字符串的指针用了.
printf(a, 34, a, 34);这里第一个a起格式化字符串的作用(printf函数原形int printf(const char *format, ...);所以第一个a对应的一定是格式化字符串format),注意到字符串里有"%c%s%c",两个%c分别对应两个34,打出来就是符号"双引号.中间那个%s对应第二个a
记录一下,有时间娱乐一下。
阅读(4125) | 评论(0) | 转发(0) |