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

来源:百度知道 编辑:UC知道 时间:2024/05/18 09:59:57
如#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);
}
函数的调用为什么不起作用呢?
请各位高手多回答一下实参与形参的传递问题(不要复制别人的哦)
这不是一个问题.请各位主要回答实参对形参的传递问题.如对一个函数只是对数据进行操作处理,如变换顺序等,无返回值.对于传递的形参是变量还是地址,对主函数的影响有无不同.

void f(int * &ptr)是自定义函数!
无返回值!参数类型为指向int型变量的指针变量!即参数&ptr的类型是指向int型变量的指针!那就很好解释啦!
int *ap = arr,实际上是 int *ap = &arr[0],
分开写就是:
int *ap;
ap = &arr[0];
故 f(ap) 相当于 f(&arr[0]) 传的参数是指向int型变量的指针!正确!
而 f(arr) 中 arr 是错误写法,数组单独使用必须加下标!
但指针指向数组时!可以写成:ap = arr 相当于 ap = &arr[0]
但单独使用 arr 是错误的!它什么也不是!更不会是指向int型变量的指针,它不存在!

答案:
你在开头定义的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);
}

悉雨辰寂

#include<stdio.h>
#include <iostream>
using namespace std;
//int a,b;
int fun(/*int x,int y*/)
{
int a,b,z;
a=100,b=200;