聚合初始化,将指针设置为结构成员

问题描述 投票:0回答:1

是否可以使用聚合初始化将aptr设置为指向a。哪个结构里面?问题是针对C和C ++的。

struct S {
  int a;
  int* aptr;
};

int main() {
  S s = {
    .a = 3,
    .aptr = &a
  };
  return 0;
}
c++ c c11 c++20
1个回答
1
投票

尝试:

#include <stdio.h>

struct S {
  int a;
  int* aptr;
};

int main() {
    struct S s = {.a = 3, .aptr = &s.a};
    printf("%d", *s.aptr);
}

Working sample

这有效,但结构很奇怪,以常规方式分配指针也很容易。

© www.soinside.com 2019 - 2024. All rights reserved.