这是初始化指针的一种不太常见的方法:
int *p = (int[10]){[1]=1};
在这里,指针指向复合文字。
#include <stdio.h>
int main(void)
{
int *p = (int[10]){[1]=1};
printf("%d\n", p[1]);
}
输出:
1
该程序在 G++ 编译器中编译并运行良好。
所以,
这是初始化指向复合文字的指针的正确方法吗?或者
是未定义的行为初始化指向复合文字的指针吗?
这是初始化指针的一种不太常见的方法:
int *p = (int[10]){[1]=1};
在这里,指针指向复合文字。
#include <stdio.h>
int main(void)
{
int *p = (int[10]){[1]=1};
printf("%d\n", p[1]);
}
输出:
1
该程序在 G++ 编译器中编译并运行良好。
所以,
这是初始化指向复合文字的指针的正确方法吗?或者
是未定义的行为初始化指向复合文字的指针吗?