递归声明变量 [英] recursive declaration of variables
问题描述
我想问两个问题。
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屋!