指向自己的指针 [英] pointer to itself
问题描述
int main()
{
int * i =(int *)& i;
}
上述声明是按照标准的有效声明吗?
由于对象正在创建,同时我试图存储
其地址本身,这是正确的事情吗?
shaanxxx写道:
int main()
{
int * i =(int *)& i ;
}
上面的语句是按照标准的有效声明吗?
因为对象正在创建,同时我也是试图将其地址存储起来,这是正确的事情吗?
好吧,没有错。没有什么能阻止你这样做。
shaanxxx写道:
int main()
{
int * i =(int *)& i;
}
上面的语句是按照标准的有效语句吗?
由于对象是在创建的,同时我试图将其地址存储为自己的地址,这是对的吗?
这是实现定义的行为,因为你初始化我的
是一个不兼容的指针值。我的意思是只持有int指针
值。你正在为它指定一个类型指针的指针值,指向
指向int的指针。
3月4日,8日:17 pm,shaanxxx < shaan ... @ yahoo.comwrote:
int main()
{
int * i =(int *)& i;
}
上述声明是否符合标准的有效声明?
由于对象正在创建,同时我试图将其地址存储在其中,这是正确的事情吗?
我猜可能存在对齐问题。
如果我错了,请纠正我。
int main()
{
int *i = (int *) &i;
}
Above statement is a valid statement as per standard ?
Since object is getting created and same time i am trying to store
its address in itself, it is right thing to do?
shaanxxx wrote:int main()
{
int *i = (int *) &i;
}
Above statement is a valid statement as per standard ?
Since object is getting created and same time i am trying to store
its address in itself, it is right thing to do?Well, nothing was wrong. Nothing prevents you doing that.
shaanxxx wrote:int main()
{
int *i = (int *) &i;
}
Above statement is a valid statement as per standard ?
Since object is getting created and same time i am trying to store
its address in itself, it is right thing to do?It''s implementation defined behaviour since your initialising i with
an incompatible pointer value. i is meant only to hold int pointer
values. You''re focibly assigning it a pointer value of type pointer to
pointer to int.
On Mar 4, 8:17 pm, "shaanxxx" <shaan...@yahoo.comwrote:int main()
{
int *i = (int *) &i;
}
Above statement is a valid statement as per standard ?
Since object is getting created and same time i am trying to store
its address in itself, it is right thing to do?I guess there can be alignment issues.
Correct me if I''m wrong.
这篇关于指向自己的指针的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!