首页
社区
课程
招聘
请教一个关于访问静态变量的问题
发表于: 2006-1-19 11:21 3904

请教一个关于访问静态变量的问题

2006-1-19 11:21
3904
请教高手,如果在一个函数里定义一个静态变量,按道理这个变量应该在全局数据内存里被分配一个空间,那是否可以在另一个函数里访问这个变量呢,又怎么访问?

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
2
不可以直接访问的,这个变量的作用域是这个函数,尽管它的生存期是整个程序的执行过程
至于是否可以通过指针访问没有试过
2006-1-19 13:07
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
char* szTemp=NULL;
void FunTest(void)
{
   static char szPrivate[100]={NULL};
   szTemp=szPrivate;
}

别的涵数中,应该可以用szTemp指针来访问吧
2006-1-19 16:21
0
雪    币: 288
活跃值: (415)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
4
是可以访问的,不过要很清楚静态变量的排列位置才行:
如下面的代码:
//////////////////////////////////
#include <iostream.h>

void maa();

void main()
{
        static int a = 8;
        int *tmp;
        cout << a << "\t" << &a <<endl;
        maa();
        cout << a << "\t" << &a <<endl;
        tmp = ( &a + 1 );
        cout << *tmp << "\t" << tmp << endl;

}

void maa()
{
        static int a = 10;
        cout << a << "\t" << &a <<endl;
}
/////////////////////////////
执行的结果:
8        0x00409040
10        0x00409044
8        0x00409040
10        0x00409044
2006-1-19 16:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
很谢谢"酷酷"兄和"ProZel"兄的回复,我的理解,这样对吗?
void aaa();

void main()
{
  static int a=10;
  printf("%d %ld\n",a,&a);
  aaa();
}

void aaa()
{
  static int b=100;
  int *tmp=&b;
  tmp--;
  printf("%d %ld\n",*tmp,tmp);
}
2006-1-20 11:44
0
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
6
本人认为这样做是一种比较危险的做法
2006-1-20 11:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最初由 thebutterfly 发布
本人认为这样做是一种比较危险的做法


不冒险,哪来的收获?
2006-1-20 14:59
0
游客
登录 | 注册 方可回帖
返回
//