http://developer.download.nvidia.com/CUDA/training/GTC_Express_Sarah_Tariq_June2011.pdf
在上面的教程(幻灯片29)中,他们启动了3个指向int的指针:
int *a, *b, *c;
显然这是类型(int *),但它们以某种方式使内核可以使用语法a[index]
访问其索引
他们还使用一些(对我来说)未知命令来初始化它们的值:
a = (int *)malloc(size); random_ints(a, N);
那么这个命令是做什么的?首先,它将指针* a转换为指向int(但稍后a
神奇地变为向量)。我找不到任何关于random_int精确做什么的来源(我的编译器也不认识它,因为它可能需要一些包含)。我想它会使a
长度为N的向量具有随机整数(尽管a
的类型为int
)。
我尝试用vector <int> * a;
等做同样的事情来解决这个问题,但我仍然无法将其传递给我的内核(无论我尝试什么,它都不会添加元素)。
我在C ++工作。提前谢谢。
编辑:这可能是伪代码吗?因为显式的C ++示例以不同的(可理解的方式)
执行此操作答案 0 :(得分:7)
实施例
int* p = new int[2];
p[1] = 2;
*(p + 1) = 2; // same as line above - just other syntax
*(1 + p) = 2; // and other way
1[p] = 2; // don't use it - but still valid
int
实施例
int* p = (int*)malloc(12 * sizeof(int)); // C way equivalent to C++: new int [12]
请注意,您必须在free(p)
之前释放此指针,而不是delete [] p
。
示例:
void random_ints(int* a, int N)
{
int i;
for (i = 0; i < N; ++i)
a[i] = rand();
}