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个回答
展开全部
你调用add(num)实际上是传了一个num的副本进去,不会对num有任何影响。你把void add(int num)改为void add(int &num)就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为add里面的num不能把修改的值带回main函数去呀。
这个叫参数按值传递。
这个叫参数按值传递。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
调用add函数时,传入的是num的值3,在add函数中num自增1变为4,其值的作用域只在add函数中,main中的num还是3.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
add函数的num参数是拷贝传入其值在函数调用内部有效,如果要改变num 传地址进去
void add(int *num)
{
*num++;
}
void add(int *num)
{
*num++;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询