gpt4 book ai didi

c - 如何获取变量地址的地址(&& 是编译器错误)?

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

我有一个似乎无法在网上找到的快速问题。

我正在使用 CUDA 做一些 GPU 工作,我需要在 GPU 上分配一些数据。 cudaMalloc 函数是这样的:

cudaMalloc(void** identifier, size_t space);

很简单。所以,让我们分配一个整数。

int i = 5;
cudaMalloc((void**)&(&i), sizeof(int));

但是这个错误(“表达式必须是左值或函数指示符”)。明显的解决方法是将 i 声明为开始的指针,然后获取它的地址,并且工作得很好;我只是讨厌变通办法。

我觉得这个问题应该有一个明显的答案 - 毕竟,***** 甚至 ******* *** 在 C 中工作得很好。那么,我如何“干净地”获取变量地址的地址?

谢谢!

最佳答案

不是解决方法;这才是正确的做法。

该函数需要指向 int 的指针的地址,因为它将将该指针设置为指向它刚刚分配的 int。因此,您需要一个真实的、分配的指针的地址。像“&&i”这样的表达式要求编译器给你 i 的地址——它是一个纯数字,没有存储位置——然后给你一个指向那个值的指针,这当然是它做不到的。

所以你想说

int *p;
cudaMalloc((void**)&p, sizeof(int));

现在 *p 是分配的 int

关于c - 如何获取变量地址的地址(&& 是编译器错误)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10989701/

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