在自定义的函数中使用 static 静态局部整形变量,计算3的的立方值。
发布网友
发布时间:2024-01-19 03:58
我来回答
共5个回答
热心网友
时间:2024-11-29 22:27
int iTemp;
iTemp=iSum;
这个可以直接省略了,改成static int iSum=3;iSum=iSum*3;我把你的程序改了一下代码如下:#include<stdio.h>void Caculate()
{
static int iSum=3;iSum=iSum*3;
printf("%d\n",iSum);
}
int main()
{
Caculate();
Caculate();
return 0;
} --------------------------------------------------------------------------------------main函数两次调用函数Caculate static int iSum 变量是静态变量 他的值是存放在静态存储区的 所以,他的变量的生存周期是整个程序的运行期间 所以,函数结束后,他的生命周期没有终结 也就是内存不会被释放当第一次执行Caculate函数时,iSum 变量的值变成9 函数结束后,他的值还是9 当第二次执行Caculate函数时,iSum=iSum*3 iSum=9*3=27 所以,结果才会这样的
热心网友
时间:2024-11-29 22:28
首先
static int iSum=3;
int iTemp;
iTemp=iSum;
iSum=iTemp*3;
这段代码的意思是,定义了一个使用 static 静态局部整形变量iSum并赋值3,整形变量iTemp,将iSum的值赋给iTemp。iTemp乘3后又还给iSum,这时iSum=3*3=9.
现在我们去main函数,因为程序都是从main函数开始的,Caculate(); 这句话就是去调用
void Caculate()
{
static int iSum=3;
int iTemp;
iTemp=iSum;
iSum=iTemp*3;
printf("%d\n",iSum);
}这个函数,第一次调用iSum=3*3=9,第二次调用iSum=3*3=27.为什么呢,因为iSum被定义static型,只会执行一次static int iSum=3;这句赋初值,第二次调用Caculate()时,iSum已经等于9啦,所以第二次输出27。如果不是iSum被定义static型,iSum在第二次被调用时又会执行int iSum=3;两次就都是9啦
热心网友
时间:2024-11-29 22:28
int iTemp;
iTemp=iSum;
iSum=iTemp*3;
就是给变量赋值,caculate是函数调用,因为有2个变量都是用的静态 所以调用2次才OK
热心网友
时间:2024-11-29 22:29
static int iSum=3;个人理解是特殊写法。编程器只认一次。第二次看见它就删了?
一般写在函数外面。既然这程序能正确运行,就说明iSum=3只运行了一次。
Caculate()功能是iSum=iSum*3;运行一次。
两次就是iSum=iSum*3*3;初始是3,如果最后输出27就对了。
这是实验static特点的程序。不是真的干什么用的。
热心网友
时间:2024-11-29 22:29
#include<stdio.h>
#define P 3.14
void a()
{
static int a = 3;
a *= 3; //(a = a * 3) = (a*3)
printf("%d\n", a);
}
int main()
{
printf("第一次:");
a();
printf("第二次:");
a();
return 0;
}