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
}
为什么不对呢?哪里不对呢?
展开
 我来答
345082603
2018-01-19 · TA获得超过267个赞
知道小有建树答主
回答量:207
采纳率:50%
帮助的人:99万
展开全部
你调用add(num)实际上是传了一个num的副本进去,不会对num有任何影响。你把void add(int num)改为void add(int &num)就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mafangsan
2018-01-06 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1万
采纳率:71%
帮助的人:2637万
展开全部
因为add里面的num不能把修改的值带回main函数去呀。
这个叫参数按值传递。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
怼嘚莳间
2018-01-12 · TA获得超过107个赞
知道小有建树答主
回答量:79
采纳率:33%
帮助的人:44.6万
展开全部
调用add函数时,传入的是num的值3,在add函数中num自增1变为4,其值的作用域只在add函数中,main中的num还是3.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
VX_JJJackie2
2018-01-16 · 超过27用户采纳过TA的回答
知道答主
回答量:57
采纳率:72%
帮助的人:17.9万
展开全部
#include<stdio.h>
void add(int);
void 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 
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Suvine
2018-01-23 · TA获得超过204个赞
知道答主
回答量:363
采纳率:33%
帮助的人:84.9万
展开全部
add函数的num参数是拷贝传入其值在函数调用内部有效,如果要改变num 传地址进去
void add(int *num)
{
*num++;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式