c的静态变量问题

bingyuvsbingshuang 2009-08-25 03:14:42
static int x=20;
void func1( )
{
x += 10;
}

void func2(int x)
{
x += 10;
}

void main( void )
{
Func1( );
printf(“%d”, x) ;
func2(x);
printf(“%d”, x) ;
}
请问一下结果和原因?我是菜鸟中的菜鸟,所以认为自己是菜鸟的也可解答
...全文
79 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
amasor1 2009-08-25
  • 打赏
  • 举报
回复
2楼正解!
cheneyjiang 2009-08-25
  • 打赏
  • 举报
回复
30 30
2个函数里面都调用的全局变量,C 语言是 按值传递的,所以他不会改变外部的值
niimp2 2009-08-25
  • 打赏
  • 举报
回复
#include"stdio.h"
static int x=20; //声明x为静态整形变量
void func1( )
{
x += 10;
}

void func2(int x)
{
x += 10;
}

void main(void)
{
func1( ); //调用func1()函数 x=20+10;
printf("%d", x) ;
func2(x); //调用func2()函数 x=20+10;
printf("%d", x) ;
}

chuyu111 2009-08-25
  • 打赏
  • 举报
回复
多看书
飞天御剑流 2009-08-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 bingyuvsbingshuang 的回复:]
static int  x=20;
void func1( )
{
    x += 10;
}

void func2(int x)
{
  x += 10;
}

void main( void )
{
Func1( );
printf(“%d”, x) ;
func2(x);
printf(“%d”, x) ;
}
请问一下结果和原因?我是菜鸟中的菜鸟,所以认为自己是菜鸟的也可解答
[/Quote]

fun1中的x使用的是全局变量x, 而fun2中的x是局部变量,这个x在fun2中隐藏了全局变量x,func2(x)只不过把全局x的值赋予了func2中的局部x,修改这个局部x对全局x没有影响。
szurj 2009-08-25
  • 打赏
  • 举报
回复
30 30

func2中的x仅仅是在func2中有效。和全局的x没有关系。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧