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

函数内定义的static变量怎样外部访问?解决方案

2012-02-28 
函数内定义的static变量怎样外部访问?一个函数里定义了一个staticint的变量,想在其它文件的其它函数中改变

函数内定义的static变量怎样外部访问?
一个函数里定义了一个static   int的变量,想在其它文件的其它函数中改变它,有办法吗?谢谢

[解决办法]
没有办法。不过要是定义到函数体外倒是可以
[解决办法]
你把这个static int的变量定义为public类型的,应该就可以了,要包含这个类的头文件
[解决办法]
no way.

这个变量虽然具有静态的存储类型,但是却只有局部的“视野”,除了该函数之外的任何地方均无法引用这个变量。

为什么一定要在函数里定义它呢?
[解决办法]
返回静态变量的地址不就可以了吗?为什么大家都说不可以呢?
[解决办法]
倘若你的函数可以带出该变量的地址,那么对它进行修改是确实可行的。
[解决办法]
同意楼上的意见.

参看一个实例:

#include <stdio.h>

int *fx(void)
{
static int i = 100;
static int *j = NULL;

j = &i;
printf( "j = %08x\n ", j);
printf( "i = %d\n ", i);

return j;
}

int main(void)
{
int* p = NULL;

p = fx();

*p = 1000;

printf( "p = %08x\n ", p);
printf( "static = %d\n ", *p);

p = fx();

return 0;
}

[解决办法]
楼上那样的,函数内部变量的生存期只在函数内部,函数结束后,函数返回的指针会指向空地址。
若想改变函数内部变量的值可如此:
1 :定义全局变量 int static data;
static int *pData= NULL;
2:初试时 *pData=data
在函数里使用 data,函数外使用pData

[解决办法]
en ,我试过返回函数内静态变量地址的方法,另一个文件的函数可以对静态变量进行读写,没有问题。vs2005,winxp
[解决办法]
OS: Linux
Compiler: gcc
Source code:
===============================
#include <stdio.h>
int *f(void)
{
static int i = 0;
printf( "i = %d\n ", i);
return &i;
}
int main(void)
{
int *p = f();
*p += 1;
f();
*p += 1;
f();
return 0;
}
===============================
Output:
i = 0
i = 1
i = 2

[解决办法]
extern 和 static本身就是对立的关键字,使用extern就是为了不同文件都可使用该变量或者函数.使用static关键字就是为了限制原文件使用,其它文件不可使用.
所以extern和static关键字不可同时使用的.

热点排行