【发布时间】:2021-12-27 19:04:09
【问题描述】:
`#include <stdio.h>
struct uu
{ int x;
struct uu *p;
};
struct uu fun(struct uu d)
{
d.x *= 3; d.p = NULL;
return d;
}
main()
{
struct uu a[3] = {{5,a+2}, {8, a+1}, {11,a}};
int j;
for(j=0; j<3; j++) printf("%d ", a[j].p->x);
printf("\n");
a[0].p--;
a[1].p++;
a[2].p += 2;
for(j=0; j<3; j++) printf("%d ", a[j].p->x);
printf("\n");
a[1] = fun(a[0]);
for(j=0; j<3; j++)
{
printf("%d ", a[j].x);
if(a[j].p == NULL) break;
}
}`
在这段代码中,这行struct uu a[3] = {{5,a+2}, {8, a+1}, {11,a}};如何将变量分配给自己以及这行如何
a[0].p--;
a[1].p++;
a[2].p += 2;
改变结构的地址。基本上我很困惑。请帮我。谢谢你的回答。
【问题讨论】:
-
"这行 [...] 如何改变结构的地址?" - 它没有。他们所做的只是更改
uu::p数据成员的值。 -
添加
struct uu的声明。 -
余没有任何结构。它只会改变
p的值,无论p是什么,它不会改变数组或数组元素的地址 -
您是否想知道如何在自身的初始化中引用
a?评估初始化列表时,数组的地址可用。 -
我正在编辑问题。如果你愿意,你可以再看看。很抱歉打扰你我是编码新手,所以我的知识非常低。
标签: c data-structures struct