易截截图软件、单文件、免安装、纯绿色、仅160KB

Hidden Tricks (C)(091121)

 请运行下面的代码,观察结果,有人说怎么是死循环,你同意吗?为什么?
 
#include
 <stdio.h>
int
 main()
{
  int
 i = 0;
  int
 name[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  for
 (i = 0; i <= 10; i++)
  {
    name[i] = 0;
    printf("ok\n"
);
  }
  return
 0;
}
 
这段代码一开始我还以为是小儿科,一个很傻逼的代码,完全不认为会是死循环

后来事实证明,是我自己傻逼了,好了,不多说了,现在揭晓答案了。
 
答案:
这段程序会进入死循环,当
i
循环到
10
的时候,表面上看上去
”name[10]= 0”
这句操作是会在预料之外的,因为数组中的十个数字的最后一个是
name[9],
但就这最后那句操作的时候,神奇的事情发生了,程序发生了死循环,
i
神奇的又被置成了
0.
其实道理很简单,因为
name[10]
其实就是变量
i,
通过调试我们可以知道,这两个变量指向地址是完全相同的。在函数为局部变量在栈中申请空间的时候,
i

name
前面申请,
i
就在
name
的后面,所以要先向高地址写入数据,
i

name
数组是连续排列的,所以
”name[10]= 0”
这句其实就是
”i = 0”

zz from http://blog.csdn.net/DrZinc/archive/2009/11/21/4848661.aspx


相关文档:

C++中extern “C”含义深层探索

(转)C++中extern “C”含义深层探索
 
 
1.引言
  C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象&rdquo ......

C/C++——小编谈C语言函数那些事(6)

C程序是由一组或是变量或是函数的外部对象组成的。 函数是一个自我包含的完成一定相关功能的执行代码段。下面小编和大家分享下C语言中的函数。
1.       fclose函数
fclose函数的功能是关闭一个流,其用法是:int fclose(FILE *stream); 程序例子如下:
#include <string.h& ......

C/C++——小编谈C语言函数那些事(9)

C程序是由一组或是变量或是函数的外部对象组成的。 函数是一个自我包含的完成一定相关功能的执行代码段。下面小编和大家分享下C语言中的函数。
1.     harderr函数
harderr函数的功能是建立一个硬件错误处理程序,其用法是:void harderr(int (*fptr)());程序例子如下:
#include <stdio.h>
......

C文件中引用CPP文件时的问题


unzip.c
中引用validate.cpp
文件中的函数来进行epub
纠错,产生的问题:
1.    
validate.cpp
中使用iostream.h,
但是C
中没有这个文件
,所以产生的错误:
2>
正在编译...
2>unzip.c
2>D:\Program
Files\VC\include\cstdio(25) : error C2143:
语法错误:
缺少“{ ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号