递归声明变量 [英] recursive declaration of variables

查看:86
本文介绍了递归声明变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想问两个问题。


1.如何在另一个变量中使用指向未声明变量的指针



例如:


struct recurs {

int data;

struct recurs * link ;

};


静态递归a = {5,& b};

静态递归b = {4, & a};


2.我想在变量的末尾有额外的数据。

我该怎么做?


struct varsize {

int data [];

}


static varsize a = {1,2,4,0}; // 0表示数组的结尾


我两个都收到错误。


谢谢,

Kristof巴斯蒂安森

解决方案

> struct recurs {

int data;
struct recurs * link;
};

static recurs a;

static递归b;

void Init()

{

a.line =& b;

b。 link =& a;

}


当你创建一个时,b还不存在,所以你不能指出它。 />

2.我想在变量的末尾有额外的数据。
我该怎么做?

struct varsize {
int * data;
}

static varsize a = {1,2,4,0}; // 0表示数组的结尾



class varsize

{

public:

varsize (int * pData)

{

long n;

for(n = 0; pData [n]!= 0; n ++);

data = new int [n];

memcpy(data,pData,n * sizeof(int));

}

~varsize(){delete [] data;}

int * data;

};


static int pData [] = {1,2,3,0};

varsize nnn(pData);


HTH,


-

-Gernot

int main(int argc,char ** argv){printf

(" %silto%c%cf%cgl%ssic%ccom%c"," ma",58,''g'',64," ba",46,10);}


________________________________________

正在寻找一款好游戏?亲自动手吧!

GLBasic - 你可以这样做
www.GLBasic .com




" Kristof Bastiaensen" < KR ***** @ vleeuwen.org>在消息中写道

news:pa *************************** @ vleeuwen.org ...

我有两个问题我想问。

1.如何在另一个变量中使用指向未声明变量的指针?
例如:

struct recurs {
int data;
struct recurs * link;
};

static recurs a = {5 ,& b};
静态递归b = {4,& a};

2.我希望在变量的末尾有额外的数据。
我怎么能这样做?

struct varsize {
int data [];
}

static varsize a = {1,2,4, 0}; // 0表示数组结束

我两个都收到错误。

谢谢,
Kristof Bastiaensen



在C ++中这些都不可能,但是......


你可以这样做2


struct varsize {

int * data;

}


int varsize_data [] = {1,2,4,0};

静态varsize a = {varsize_data};


你可以这样做1


struct recurs {

int data;

recurs * link;

};


static recurs a = {5,0 };

静态递归b = {4,& a};

struct fixup_recurs_a

{

fixup_recurs_a (){a-> link =& b; }

} fixup;


我不确定我会推荐哪种方法。有可能更好

C ++做任何你真正想做的事情的方式。


john


< blockquote>>

static recurs a = {5,0};
static recurs b = {4,& a};
struct fixup_recurs_a
{
fixup_recurs_a(){a-> link =& b; }
} fixup;




应该是


fixup_recurs_a(){a.link =& b ; }


john


Hi, I have two questions I would like to ask.

1. How can a use a pointer to an undeclared variable
in another variable?
for example:

struct recurs {
int data;
struct recurs *link;
};

static recurs a = {5, &b};
static recurs b = {4, &a};

2. I would like to have extra data on the end of a variable.
How can I do this?

struct varsize {
int data[];
}

static varsize a = {1, 2, 4, 0}; //0 means end of the array

I get an error for both.

Thanks,
Kristof Bastiaensen

解决方案

> struct recurs {

int data;
struct recurs *link;
};
static recurs a;
static recurs b;
void Init()
{
a.line = &b;
b.link=&a;
}

When you create a, b does not exist yet, so you can''t point to it.

2. I would like to have extra data on the end of a variable.
How can I do this?

struct varsize {
int* data;
}

static varsize a = {1, 2, 4, 0}; //0 means end of the array


class varsize
{
public:
varsize(int* pData)
{
long n;
for (n=0; pData[n]!=0; n++);
data=new int[n];
memcpy(data, pData, n*sizeof(int));
}
~varsize() {delete [] data;}
int* data;
};

static int pData[] = {1,2,3,0};
varsize nnn(pData);

HTH,

--
-Gernot
int main(int argc, char** argv) {printf
("%silto%c%cf%cgl%ssic%ccom%c", "ma", 58, ''g'', 64, "ba", 46, 10);}

________________________________________
Looking for a good game? Do it yourself!
GLBasic - you can do
www.GLBasic.com



"Kristof Bastiaensen" <kr*****@vleeuwen.org> wrote in message
news:pa***************************@vleeuwen.org...

Hi, I have two questions I would like to ask.

1. How can a use a pointer to an undeclared variable
in another variable?
for example:

struct recurs {
int data;
struct recurs *link;
};

static recurs a = {5, &b};
static recurs b = {4, &a};

2. I would like to have extra data on the end of a variable.
How can I do this?

struct varsize {
int data[];
}

static varsize a = {1, 2, 4, 0}; //0 means end of the array

I get an error for both.

Thanks,
Kristof Bastiaensen



Neither of these is possible in C++, but ...

You can do 2 like this

struct varsize {
int* data;
}

int varsize_data[] = {1, 2, 4, 0};
static varsize a = {varsize_data};

You can do 1 like this

struct recurs {
int data;
recurs *link;
};

static recurs a = {5, 0};
static recurs b = {4, &a};
struct fixup_recurs_a
{
fixup_recurs_a() { a->link = &b; }
} fixup;

I''m not sure I''d recommend either method though. There are probably better
C++ ways of doing whatever it is that you really want.

john


>

static recurs a = {5, 0};
static recurs b = {4, &a};
struct fixup_recurs_a
{
fixup_recurs_a() { a->link = &b; }
} fixup;



That should be

fixup_recurs_a() { a.link = &b; }

john


这篇关于递归声明变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆