c语言中,实参对形参的传递问题(传递的是变量和指针,有无return的区别)以及全局变量与局部变量的判断?

如#include<stdio.h>
int a,b;
void fun()
{a=100,b=200;}
main()
{int a=5,b=7;
fun()
printf("%d%d\n",a,b);
}
函数的调用为什么不起作用呢?
请各位高手多回答一下实参与形参的传递问题(不要复制别人的哦)
这不是一个问题.请各位主要回答实参对形参的传递问题.如对一个函数只是对数据进行操作处理,如变换顺序等,无返回值.对于传递的形参是变量还是地址,对主函数的影响有无不同.

int a,b; //全局变量A,B
void fun()
{a=100,b=200;} //局部变量A,B,不会影响到MAIN里面A,B,只是改变了全局变量A,B
main()
{int a=5,b=7; //局部变量A,B
fun()
printf("%d%d\n",a,b); //局部变量A,B,将全局变量A,B屏蔽
}int a,b; //全局变量A,B
void fun()
{a=100,b=200;} //局部变量A,B,不会影响到MAIN里面A,B,只是改变了全局变量A,B
main()
{int a=5,b=7; //局部变量A,B
fun()
printf("%d%d\n",a,b); //局部变量A,B,将全局变量A,B屏蔽
}int a,b; //全局变量A,B
void fun()
{a=100,b=200;} //局部变量A,B,不会影响到MAIN里面A,B,只是改变了全局变量A,B
main()
{int a=5,b=7; //局部变量A,B
fun()
printf("%d%d\n",a,b); //局部变量A,B,将全局变量A,B屏蔽
}int a,b; //全局变量A,B
void fun()
{a=100,b=200;} //局部变量A,B,不会影响到MAIN里面A,B,只是改变了全局变量A,B
main()
{int a=5,b=7; //局部变量A,B
fun()
printf("%d%d\n",a,b); //局部变量A,B,将全局变量A,B屏蔽
}
答案:
你在开头定义的int a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。

你可以这样改一下,就能明白了:
#include<stdio.h>
int a,b;
void fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}

悉雨辰寂答案:
你在开头定义的int a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。

你可以这样改一下,就能明白了:
#include<stdio.h>
int a,b;
void fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}

悉雨辰寂答案:
你在开头定义的int a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。

你可以这样改一下,就能明白了:
#include<stdio.h>
int a,b;
void fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}

悉雨辰寂答案:
你在开头定义的int a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。

你可以这样改一下,就能明白了:
#include<stdio.h>
int a,b;
void fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}

悉雨辰寂答案:
你在开头定义的int a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。

你可以这样改一下,就能明白了:
#include<stdio.h>
int a,b;
void fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}

悉雨辰寂答案:
你在开头定义的int a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。

你可以这样改一下,就能明白了:
#include<stdio.h>
int a,b;
void fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}

悉雨辰寂
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-04-13
你的函数肯定不起作用啦,你在主函数中的a,b变量是局部变量,不同于全局变量a,b(虽然同名,在主函数中屏蔽掉与其局部变量同名的全局变量)fun中修改的是全局变量,而你主函数输出的是局部变量,不要搞混了。(还有你主函数的fun()后少了一个分号-_-)把主函数中定义局部变量的语句去掉就行啦:
#include<stdio.h>
int a,b;
void fun()
{a=100,b=200;}
main()
{
fun();
printf("%d%d\n",a,b);
}

然后是实参对形参的传递问题:
1、在C语言中,如果传递的是变量,那么即使形参在函数中改变了,实参还是不变,例如:
void fun(int a,int b)
{
a=100;
b=200;
}
void main()
{
int i=0,j=0;
fun(i,j);
printf("%d,%d",i,j);//i,j的值还是0,0,你可以输出试一下
}
2、如果传递的是指针,那么就是传递地址,这样形参改变的也是相应地址的值,这样实参也会改变的,例如:
void fun(int *a,int *b)
{
*a=100;
*b=200;
}
void main()
{
int *i,*j;
*i=0;*j=0;
fun(i,j);
printf("%d,%d",*i,*j);//i,j的值还是100,200,你可以输出试一下
}

你自己调试一下试试,希望没写错-_-
第2个回答  2008-04-11
答案:
你在开头定义的int a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。

你可以这样改一下,就能明白了:
#include<stdio.h>
int a,b;
void fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}

悉雨辰寂
答案:
你在开头定义的int a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。

你可以这样改一下,就能明白了:
#include<stdio.h>
int a,b;
void fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}

悉雨辰寂
答案:
你在开头定义的int a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。

你可以这样改一下,就能明白了:
#include<stdio.h>
int a,b;
void fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}

悉雨辰寂
答案:
你在开头定义的int a,b;
这个a,b在你整个文件里都起作用。
但是,你在main函数里面又定义了一个a,b;
那么在main函数里面你使用的所有a,b,都是局部定义的a,b,因为在main函数里面全局变量a,b被屏蔽了。

你可以这样改一下,就能明白了:
#include<stdio.h>
int a,b;
void fun()
{a=100,b=200;
printf("全局变量a,b分别为:%d,%d\n",a,b);
}
main()
{int a=5,b=7;
fun()
printf("main函数里定义的局部变量a,b分别为:%d,%d\n",a,b);
}

悉雨辰寂
第3个回答  2008-04-12
函数里加工后的量,传出函数有三种方式:(1)通过全局量;(2)通过return;(3)通过指针实参送入的它的指向地址。

调用函数时,无论变量是不是指针,实参一律是单向传递,就是从调用句所在的程序块传入到函数里面去。非指针传入的是数值,指针传入的是它指向的存放数值单元的地址。函数里加工后的量,若放到指针指向的单元,函数调用完毕,加工后的量还保留在那里。

fun() 调用时,传递的全局量,是int a,b;
void fun()..... 函数的调用起了作用。
但打印语句打印的是局部量。
第4个回答  2008-04-11
int a,b; //全局变量A,B
void fun()
{a=100,b=200;} //因为在该块中没有A,B的定义,所以为全局变量A,B,不会影响到MAIN里面A,B,只是改变了全局变量A,B
main()
{int a=5,b=7; //局部变量A,B
fun()
printf("%d%d\n",a,b); //在该块中有A,B的定义,所以为局部变量A,B,将全局变量A,B屏蔽
}

总结:
局部变量和全局变量共存时,局部变量会屏蔽全局变量

SB,老子改了,看你复制的有什么用

PS:
你这个例子根本没有涉及到形参和实参的问题,你的函数都没有参数,只涉及到全局变量与局部变量的问题
形参与实参问题:
当用普通变量作形参时,如果在函数体内作了改变形参的值,他不会改变实参的值,但如果用指针变量作形参时,改变形参的值会改变实参的值.
相似回答