Chinaunix首页 | 论坛 | 博客
  • 博客访问: 679824
  • 博文数量: 183
  • 博客积分: 9166
  • 博客等级: 中将
  • 技术积分: 1920
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-31 16:17
文章分类

全部博文(183)

文章存档

2010年(159)

2009年(24)

分类: C/C++

2010-08-13 20:58:41

这里看到的
 
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
 
记录一下,有时间娱乐一下。
阅读(4117) | 评论(0) | 转发(0) |
0

上一篇:进程组,会话,控制终端

下一篇:string.c

给主人留下些什么吧!~~