gpt4 book ai didi

c - 声明原子指针与指向原子的指针

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

我理解以下声明创建了一个值数组,每个值都是原子的:

_Atomic int x[10];

但是,我不清楚这是否:

_Atomic int *x;
x = calloc(10, sizeof(int));

创建一个包含 10 个原子整数的数组,或者是一个指向非原子整数数组的原子指针。该语法是声明一个原子数组还是一个指向数组的原子指针,无论是哪个,如何声明另一个?

(注意:我知道 atomic_int,在给出的示例中,它会消除歧义。这是我实际尝试做的事情的一个更简单的版本,它使用 atomic枚举。谢谢!)

最佳答案

它是指向原子整数的指针,参见http://en.cppreference.com/w/c/language/atomic .

要声明指向整数的原子指针,您需要将关键字放在变量之前:

 int * _Atomic x;

请注意,带有 calloc 的示例可能适用于通用平台,但通常不能保证非原子变量和原子变量的类型相同。所以有必要用 atomic_init 初始化变量:

 x = calloc(10, sizeof(_Atomic int));
for (...) atomic_init(&x[i], 0);

关于c - 声明原子指针与指向原子的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29610371/

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