打印自己- C语言

4087阅读 0评论2010-08-13 liuyuanyang
分类:C/C++

这里看到的
 
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
 
记录一下,有时间娱乐一下。
上一篇:进程组,会话,控制终端
下一篇:string.c