
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个回答
展开全部
因为main函数中的num的作用域只在main函数内
你传参其实只是把num 的值 3传递给了add的入参 num ,
这个num的作用域是add,是add的一个局部变量
如果你要改变main中num的值
#include <stdio.h>
void add(int*);
main()
{
int num=3;
add(&num); //调用add()函数
printf("%d\n",num); //输出变量num值为3
}
void add(int *num)
{
*num+=1; //num自增1
printf("%d\n",*num); //输出变量num值为4
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
主函数和add()函数里的变量名字虽然都是num,但是他们确是不同的两个变量,因为他们在内存中有独立的空间存储。你在主函数把num的值传入add()函数,相当于做了如下操作:
add.num = main.num;(只是赋值而已)
add()函数执行完后,add()函数里的num变量也就消亡了,对主函数的num并没有影响
add.num = main.num;(只是赋值而已)
add()函数执行完后,add()函数里的num变量也就消亡了,对主函数的num并没有影响
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的add函数并没有把你的num的值改变,
它实际上是创建一个新的变量, 这个变量的值等于num的值 然后你在add函数里printf出来的num不是你在 main()函数中定义的. 所以你main()函数中定义的num还是3
它实际上是创建一个新的变量, 这个变量的值等于num的值 然后你在add函数里printf出来的num不是你在 main()函数中定义的. 所以你main()函数中定义的num还是3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是说经过了add函数后num的值依然是3没有变为4吗?
因为你的函数是传值运算,只是把num的值作为参数进行计算,本身num的值是不改变的
如果你把num的地址传给函数定义的指针的话,num的值就会改变。
因为你的函数是传值运算,只是把num的值作为参数进行计算,本身num的值是不改变的
如果你把num的地址传给函数定义的指针的话,num的值就会改变。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先头文件#include <stdio.h>不能少
#include <stdio.h>
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里面的num,调用add()函数后,num的实际值增加1?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询