初始化指向常量数组的指针

mog*_*gul 1 c c++

我试图避免临时变量。但我无法弄清楚正确的语法:

typedef struct {
  int n;
  int *ptr;
} i_cant_change_this_typedef;

i_cant_change_this_typedef foo;
i_cant_change_this_typedef bar;


int main(void) {
  foo.n = 123;
  int tmp[] = {0x01,0x02,0x03};
  foo.ptr = tmp;

  bar.n = 321;

/* can this be done somehow? */
/*  bar.ptr = {0x03,0x02,0x01};*/
}
Run Code Online (Sandbox Code Playgroud)

必须制作中间 tmp 变量让我很烦恼。底部的注释行应该显示我正在尝试做什么。

能不能做,怎么做?

是的,我在这里使用的是常规的 gcc/g++。

更新:我知道我应该提到我更喜欢在 C 和 C++ 中同样有效的解决方案。它将用于应避免过于复杂的动态分配的嵌入式解决方案中。

dbu*_*ush 5

您可以创建一个复合文字并让指针指向它:

bar.ptr = (int []){0x03,0x02,0x01};
Run Code Online (Sandbox Code Playgroud)