C/C++变量分析
BSS
未初始化的数据
DATA
初始化的数据
TEXT(code)
代码
在C中有全局、局部(自动变量)和静态变量。
全局变量在C语言里表示时,在函数之外的就是全局变量,即在函数外所申明的变量;而静态变量可以放在函数外,也可以放在函数内。全局变量有两个作用:第一,当在函数外申明时,所有文件的函数都可以访问它,都可以直接引用全局变量的访问;第二,可以允许另外的文件访问,但是在那个要访问的文件中用extern做标记。而静态变量如果放在函数的外面,则在整个文件中也是可以访问的,但是,另外的文件是不可以访问的。如果静态变量放在函数内,那么就只能是这个函数能访问,但它还是放在DATA区域中的。
局部变量都是在堆栈中的,而静态和全局都是在数据区中。堆栈和全局区在执行的时候如图所示;
堆区
栈区
堆区
BSS
DATA
CODE
如果类是一个巨大的类,需要占据很大的数据空间,就应该把它当做指针用new来分配空间。
局部变量(自动变量),自动的意思就是自动地分配和清除,并且出示的值也是随机的。所以,如果程序中没有对自动变量进行复制就使用,那么可能会出现意想不到的问题。
相关文档:
/*
思路:递归算法
前0..cur-1位置上已经排好,当前cur位置取一个和前面都不一样的,然后递归处理后面的。
*/
/* 输出1,2,3,..,n的排列数 */
#include <stdio.h>
#include <assert.h>
#include <malloc.h>
void p(int n)
{
extern void _p(int n, int cur, int *a);
int *a;
a = ......
#include "Stdio.h"
#include "Conio.h"
#include
#define size 81
#define lim 5
#define tstr "ABCDEFGH"
void display(char **p,int i);
void display2(char *p[],int i);
void display3(char (*p)[40],int i);
void testint();
int main(void)
{
testint();
getch();
return 0;
}
test1() ......
访问Nand Flash时需要先发出命令,然后发出地址序列,最后读/写数据;
需要使用各个信号来分辨命令、地址、数据;
S3C2410 的Nand Flash控制器 提供了相关寄存器来简化这些操作:
& ......
理解c中的序列点
http://blog.chinaunix.net/u1/42826/showart_364176.html
让我们来看看下面的代码:
int i=7;
printf(”%d\n”, i++ * i++);
你认为会返回什么?56?no。正确答案是返回 49?很多人会问为什么?难道不该打印出56吗?在ccfaq中有非常详尽的解释,根本原因在于c中的序列 ......