关于一道C的程序题纠结中啊= =!

来源:百度知道 编辑:UC知道 时间:2024/06/25 22:56:34
#include<stdio.h>
void fun(int *a,int *b)
{
int *c;
c=a;a=b;b=c;
}
main()
{
int x=3,y=5,*p=&x,*q=&y;
fun(p,q);printf("%d,%d,",*p,*q);
fun(&x,&y);printf("%d,%d\n",*p,*q);
}
运行结果是3,5,3,5 请问这是为什么啊
为什么不是5,3,3,5呢?纠结中啊 小弟9月要考2级 GGJJ们帮帮忙啊先谢谢拉!
#include<stdio.h>
void fun(int *a)
{
*a=*a+1;
}
void main(void)
{
int b=1;
fun(&b);
printf("%d",b);
}

再请问下二楼的高手 上面的程序运行下来是2 而不是1啊 同样是局部变量 这又怎么解释呢?

#include<stdio.h>
void fun(int *a,int *b)
{
int c;
c=*a;*a=*b;*b=c;
}
main()
{
int x=3,y=5,*p=&x,*q=&y;
fun(p,q);printf("%d,%d,",*p,*q);
fun(&x,&y);printf("%d,%d\n",*p,*q);
}
这个才是5,3,3,5
首先你要明白fun()函数的意思,你原来那个fun()只交换a和b的地址,没有改变内容。

#include<stdio.h>
void fun(int *a)
{
*a=*a+1;
}
void main(void)
{
int b=1;
fun(&b);
printf("%d",b);
}

你这个改变了内容嘛,主要是有*就可以改变内容。

难道是fun函数没有返回值?
确实纠结,
我怎么认为结果应该是5353哩?

楼主,我觉得你这道程序的问题就在于局部变量作用域你没考虑清楚!一般我们的程序里,函数里定义的变量或函数参数定义的变量都属于局部变量!而局部变量的作用域是局部的!例如就这道题来说的话!你在函数fun里面定义int* a,b,c; 他们都是局部变量,虽然你在主函数调用了fun函数!可是这些变量的作用域不会作用到主函数里面!而是在fun函数调用完的那一刻就被撤销了!也可以这样说就是这道题里面的fun函数根本就是没用到的!你运行一下下面这道程序!也许你就会明白了!
#include<stdio.h>
#include<iostream>
using namespace std;
void fun(int *a,int *b)
{
cout<<a&