据说是美国最“怪”C程序大赛的获奖程序
int main()
{
printf(&unix["\021%six\012\0"], (unix)["have"] + "fun" - 0x60);
}
gcc -S编译成汇编代码如下:
.file "test.c"
.section .rodata
.LC0:
.string "fun"
.LC1:
.string "\021%six\n"
.string ""
.text
.globl main
.type main,@function
main:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
andl $-16, %esp
movl $0, %eax
subl %eax, %esp
subl $8, %esp
movl $.LC0, %eax
subl $96, %eax
addl $97, %eax
pushl %eax
pushl $.LC1+1
call printf
addl $16, %esp
leave
ret
.Lfe1:
.size main,.Lfe1-main
.section .note.GNU-stack,"",@progbits
&n
相关文档:
C/C++中Static的作用详述
1.先来介绍它的第一条也是最重要的一条:隐藏。
当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c.
下面是a.c的内容:
char a = 'A'; // global variable
void ......
Author: Scurffybear Date: 2009.09.08
最近在招新人,下面是一道C的面试题,面试的印度人中,没有一个人做对,我粗看了一下题,在没有看答案前,我自己也做错了,嗯,是的,没啥不好意思的,我觉得这个题目很容易使人产生误解,又或者择C有深厚功底的人能躲过这一个障眼法?
以下是题目,
main()
{
char * ......
c变成的对象大多是共享内存中申请,比较少用malloc直接来申请,所以链表设计一般是下面2中结构:
对象 --> 对象 --> 对象
对象 -->链表对象-->对象 -->链表对象
(1)对于第一种,链表直接关联到对象本身,所以如果一个对象在消亡时,没有及时清理掉链表关系,则会导致链表掉链。
(2)链表对象本身是一 ......
在C语言里,全局变量如果不初始化的话,默认为0,也就是说在全局空间里:
int x =0; 跟 int x; 的效果看起来是一样的。但其实这里面的差别很大,强烈建议大家所有的全局变量都要初始化,他们的主要差别如下:
编译器在编译的时候针对这两种情况会产生两种符号放在目标文件的符号表中,对于初始化的,叫强符号,未初始化的 ......
c文件操作就这么简单
文件操作,稍微一总结.。
FILE是一个结构体类型,在TC和VS中定义不相同,他的作用就是在fopen()之后保存了打开文件的信息。也就是说操作系统帮我们完成了,我们不用管,大大降低了难度吧。
首先我们考虑下对文件的操作,文件类型分为文本和二进制。读写文件的函数一般前面有个f,也就表示file,open ......