| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 842 人关注过本帖
标题:静态数据成员的初始化问题!各位高手不吝赐教!!
只看楼主 加入收藏
wangzhao8550
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:32
专家分:139
注 册:2011-4-17
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:7 
静态数据成员的初始化问题!各位高手不吝赐教!!
程序代码:
class Person
{
  private:
         static char *name[10] ;
..............
..............
..............
};
关于这样一个指针数组静态成员怎样初始化?如果只是指针静态成员又或者是数组静态成员的初始化在网上还可以搜到解决方案,各位高手帮忙看看,万分感谢!
搜索更多相关主题的帖子: 解决方案 
2011-05-14 15:03
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:4 
class Person
{
private:
    static char *name[10];
};

char *Person::name[10] = {…………};
2011-05-14 17:15
weststreet
Rank: 2
等 级:论坛游民
帖 子:21
专家分:18
注 册:2011-2-9
收藏
得分:4 
char *Person::name[10] ="要初始化的字符串"
2011-05-14 17:21
wangzhao8550
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:32
专家分:139
注 册:2011-4-17
收藏
得分:0 
谁还有正解吗?
2011-05-16 10:50
ucyan
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:61
专家分:198
注 册:2011-4-12
收藏
得分:4 
char *Person::name[10] ="要初始化的字符串" 就可以啦~~
你要理解静态对象的含义,静态对象分为,静态局部对象和静态全局对象
这里就讨论一下静态局部对象吧,在C++语言中,每个对象都有一个生命期,在默认情况下局部变量的生命期局限于
所在函数的每次执行期间,当函数被调用时会产生一个自动对象,它在每次调用函数时创建和撤销,当函数结束时,会
释放它的局部存储空间,因此不能再访问。
而静态局部对象,它的生命期却能跨越了这个函数的多次调用,如在一个函数中创建一个静态对象  static int a = 10;它
一旦建立就会在程序结束前都不会被撤销。在函数的多次调用过程中,静态局部对象会持续存在并保持它的值
下面有一个列子
程序代码:
size_t count_calls()
{
    static size_t ctr = 0;
    retrun ++ctr;
}
int main()
{
    for (size_t i = 0; i != 10; ++i)
    {
        cout << count_calls() <<endl;
    }
    return 0;
}
静态全局变量就自己体会吧~~
2011-05-16 19:41
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:4 
程序代码:
#include <iostream>
#include <cstdio>
using namespace std;

class A
{
public:
    static char *name[10];
};

char *A::name[10] = {"12345", "12345", "23456", "23456", "54321", "54321", "723", "823", "923", "1320"};

int main(void)
{
    for(int i=0; i<10; ++i)
    {
        printf("%p\n", A::name[i]);
    }

    A::name[1] = new char[10];
    printf("%p\n", A::name[1]);
    for (int i=0; i<9; ++i)
    {
        A::name[1][i] = '0' + i;
        printf("%p\n", &A::name[1][i]);
    }
    A::name[1][9] = 0;
    printf("%p\n", &A::name[1][9]);

    printf("%s\n", (char*)(0x00396f18));

    cout << endl;

    return 0;
}
2011-05-16 20:41
小猫天涯klz
Rank: 1
来 自:沧州
等 级:新手上路
帖 子:2
专家分:4
注 册:2011-5-15
收藏
得分:4 




表示不会
2011-05-16 21:11
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:0 
程序代码:
#include <iostream>
using namespace std;

class A
{
public:
    static char *name[10];
};

char *A::name[10] ={
    new char[10], new char[11], new char('3'),
    new char('4'), new char('5'), new char('6'),
    new char('7'), new char('8'), new char[30],
    new char('0')};


int main(void)
{
    for (int i=0; i<10; ++i)
    {
        cout << A::name[i][0] << endl;
    }
    cout << endl;

    A::name[0] = "yxf";
    A::name[1] = "yyy";
    A::name[8] = "12345678901112131415161718190";
    for (int i=0; i<10; ++i)
    {
        cout << *A::name[i] << endl;
    }
    cout << endl;

    for (int i=0; i<10; ++i)
    {
        cout << A::name[i] << endl;
    }
    cout << endl;

    return 0;
}
2011-05-16 21:23
快速回复:静态数据成员的初始化问题!各位高手不吝赐教!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039447 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved