首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于c中全局变量访问的有关问题

2012-02-28 
关于c中全局变量访问的问题这是程序代码:#include iostream.hintnintmin(int[],int)voidmain(){intiAr

关于c中全局变量访问的问题
这是程序代码:
#include <iostream.h>
int   n;
int   min(int   [],int);
void   main()
{

  int   iArray[10]={34,91,83,56,29,93,56,12,88,72};
  cout < <min(iArray,10) < <endl
    < <n < <endl;
}
int   min(int   a[],int   len)
{
  n=4;
  return   n;
}
全局变量n在main中赋予3,在min函数中被赋予4,但是执行的结果是min的返回值是4,而n还是等于3,全局n到底在min中是否被修改了呢?
我又试着在程序中加了一个函数调用语句int   c=min(iArray,10);发现这是所有的n都等于4,是不是说在用cout调用函数是全局变量不被调用函数修改呢?那函数的返回值为什么又是4而不是3呢?以下是改后的代码:
#include <iostream.h>
int   n;
int   min(int   [],int);
void   main()
{

  int   iArray[10]={34,91,83,56,29,93,56,12,88,72};
  int   c=min(iArray,10);
  cout < <min(iArray,10) < <endl
    < <c < <endl
    < <n < <endl;
}
int   min(int   a[],int   len)
{
  n=4;
  return   n;
}
感谢您的赐教。我用的是vc6.0.

[解决办法]
全局变量n在main中赋予3

-------------------------------------
哪一行赋的?
[解决办法]
从右到左执行,所以n那时候还是3。
cout < <n < <endl
< <min(iArray,10) < <endl
< <c < <endl;
这样就应该是4了

[解决办法]
是从右到左执行的?
[解决办法]
全局变量n在main中赋予3
----------------------------
不知道你在那一行赋值的哦.
并且,真没搞清楚.你想问什么啊.
[解决办法]
果然是有顺序的,有人能给解释下吗,帮顶
[解决办法]
我的结果是4, 3

cout < <min(iArray,10) < <endl //你执行的这步,调用min后在min函数里局部变量n被变成4了
< <n < <endl; //到这里,n是全局变量,所以还是3,因为出了min函数范围了
不知道能听明白不,呵呵
[解决办法]
看程序有点累,呵呵,看了半天才发现Main函数中n并未设值~~~

热点排行