gpt4 book ai didi

c - 在 C 中初始化指向复合文字的指针

转载 作者:太空宇宙 更新时间:2023-11-04 02:29:02 25 4
gpt4 key购买 nike

这是一种不太常见的初始化指针的方法:

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++ 编译器中编译并运行良好。

所以,

  • 这是初始化复合文字指针的正确方法吗?或者

  • 是否未定义行为初始化复合文字指针?

最佳答案

是的,有一个指向复合文字的指针是有效的。标准允许这样做。

n1570-§6.5.2.5 (p8):

EXAMPLE 1 The file scope definition

int *p = (int []){2, 4};

initializes p to point to the first element of an array of two ints, the first having the value two and the second, four. The expressions in this compound literal are required to be constant. The unnamed object has static storage duration.

关于c - 在 C 中初始化指向复合文字的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46557537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com