gpt4 book ai didi

c - 这个无名变量是什么? C

转载 作者:行者123 更新时间:2023-12-04 02:26:46 24 4
gpt4 key购买 nike

拿这个代码

int main() {
int *p = &(int){2};
}

这是什么? &(int){2} 一个没有名字的变量? C中的无名变量有什么意义?如果它没有分配给名称,编译器如何知道将其保存在堆栈中?

此外,如果我声明一个无名值,例如

int main() {
(int){3};
}

有没有办法以完全可移植的方式取回这个无名变量的地址? (完全可移植,无论堆栈如何安排,它都可以在每个平台上运行)

经过多年的 C 编码,我不知道你可以像那样声明无名变量。您是否有理由希望在常规命名变量上使用它?

最佳答案

这称为复合文字。它的生命周期与在相同范围内声明的局部变量相同。

一个常见的用途是在结构初始化后分配它的所有值:

struct s {
int a;
float b;
};

struct s s1;
s1 = (struct s){3, 4.0};

或者将其地址传递给需要指向有效对象的指针的函数,但您不打算在函数返回后使用该对象:

int x[5];
memcpy(x, (int[5]){3,4,5,6,7}, sizeof(int[5]));

关于c - 这个无名变量是什么? C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67040831/

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