售土地:有谁知道什么是动态变量啊?

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/06 13:55:24
我是数据结构初学者,这个问题不太明白,各位高手指教~~
与指针有关的

楼上的有点不对
#define n 5 并不是定义了一个静态变量n,只是一条宏指令,n什么都不是,更不是变量。
楼注所指的所谓动态的变量,我认为应该是类似于
p=(int*)malloc(sizeof(int));
这种堆区分配的变量。
这样的话,动态变量并不是准确的叫法,应该被称为“动态分配的变量”,而与其相对的也不是静态变量(类似于static int a这种的),而是“栈区分配的变量”,是指并不定义时就分配了空间,而是使用时再分配空间。
例如下面这条C指令:
int a;
那么a这个变量就在栈区被创建,定义后就可以使用,例如:
a=1;

而如果我写了这么一句:
int* p;
那么p是一个悬空指针,不能立即使用的。
例如现在*p=1或p[3]=2都是错的。p是一个int变量还是一个int数组,看你是怎么分配的。

例如,我要动态分配一个整形变量:
p=(int*)malloc(sizeof(int));
以后就可以操作(*p)=1之类

如果我要动态分配一个长度为n的数组:
p=(int*)malloc(n*sizeof(int));
以后就可以操作p[2]=3或*(p++)=2

指针?

动态变量就是在程序中或者函数中随时改变以的量.
比如说:
# include math
# define n 5
main()
{
int i;
for(i=1;i<=n;i++)
printf("%d/n",i);
printf("%d/n",n);
}
结果为: i=6
n=5
i 在程序中就是一个变量.从一开始初始化时i=1;程序结束以后就变成了6;不为i这个变量分配内存空间,暂存数据寄存器.
n 在程序中就是一个静态的变量.在程序的执行过程中没有发生量的变化,是静变量, 通过对n的定义,已为它分配一个固定的内存单元,在整个程序执行的过程中不发生变华.
总之,在函数头部有声明的,一般都属静态变量,还有在C++中,你会见得更多,如: static int function(); 这就是一个静态成员函数。
不要急,见得多就熟了。

动态变量是和静态变量相对的,一般我们定义的都是动态变量,如果是静态变量,则需要加static。
静态变量就是值不改变的,比如你定义一个:
static float pi = 3.14;
以后你用pi 就是3.14了。不能再给它赋值了。