
C语言“局部变量作用域”的问题
voidadd(int);main(){intnum=3;add(num);//调用add()函数printf("%d\n",num);//输出变量num值为3}void...
void add(int);
main()
{
int num=3;
add(num); //调用add()函数
printf("%d\n",num); //输出变量num值为3
}
void add(int num)
{
num++; //num自增1
printf("%d\n",num); //输出变量num值为4
}
为什么不对呢?哪里不对呢? 展开
main()
{
int num=3;
add(num); //调用add()函数
printf("%d\n",num); //输出变量num值为3
}
void add(int num)
{
num++; //num自增1
printf("%d\n",num); //输出变量num值为4
}
为什么不对呢?哪里不对呢? 展开
122个回答
展开全部
void add(int *num);
int main()
{
int num = 3;
add(&num); //调用add()函数
printf("%d\n", num); //输出变量num值为4
return 0;
}
void add(int *num)
{
(*num)++; //num自增1
printf("%d\n", *num); //输出变量num值为4
}
你这不是局部变量作用域的问题,按理你这应该是传参的问题。你的函数为add(int num),是值传递,在传递到add函数时会生成临时变量num, 临时变量与你传递的变量不是同一地址,所以改变临时变量不会影响你传递的变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
main函数里面的num和add函数里面的num不是同一个num, 各自进行运算互不影响
所以main函数里面的num输出为3
add里面的num的值有main函数传过来的值为3
进行了一次自加, 得到4
所以add里面额num输出结果为4
所以main函数里面的num输出为3
add里面的num的值有main函数传过来的值为3
进行了一次自加, 得到4
所以add里面额num输出结果为4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不太清楚你想要表达什么。我给你解释一下这段代码吧。
在main函数里先调用add函数,传入的参数是3,该参数被赋值给一个临时变量num,num自加1然后输出,add函数调用结束,销毁add函数里的临时变量num。然后输出main函数的num变量,由于传参的方式是传值而不是传地址,所以main函数里的num的值并不改变。
在main函数里先调用add函数,传入的参数是3,该参数被赋值给一个临时变量num,num自加1然后输出,add函数调用结束,销毁add函数里的临时变量num。然后输出main函数的num变量,由于传参的方式是传值而不是传地址,所以main函数里的num的值并不改变。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-01-09
展开全部
你这输出是对的啊。。。。你问的是什么,add函数传的是值并不是地址,所以主函数传到add的只是一个值3,而且++只是3++,main函数本身的num并没有被改变。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
main函数的num和add中的num不是同一个,从编译上讲编译后会给两个num加上修饰,main中的相当于num1,add中的相当于num2,互不影响,是存放在不同的位置的,只是作为一个传参,传递过程中令num2=num1;要使得子函数改变主函数也变得使用指针传递
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询