我正在使用D并与一些C库进行接口连接。因此,我必须将D数组转换为C的指针(例如short *)。目前我只是这样投:从C到D的数组指针
int[] dArray = [0, 1, 2, 3, 4];
myCFunction(cast(int*) dArray);
这是不安全的吗?我试图做:
myCFunction(&dArray);
但是这样做给了函数一个int [] *而不是int *。我看到在C++中有些人采取了这样的第一个元素:
myCFunction(&dArray[0]);
但是,那个指针只会指向第一个元素吗?我是来自Java世界的指针和引用的新手。
我该如何将数组转换为指针,以便将其传递给C函数?
会不会'myCFunction(dArray)'工作? –
数组中的元素在内存中是连续的,因此'&dArray [0]'确实是第一个元素的地址;然而,其余的元素是从该偏移量+1,+2等。此外,仅仅传递数组会将其分解为指向第一个元素的指针。 'myCFunction(dArray)'或'myCFunction(&dArray [0])'都应该可以工作 – yano
@EugeneSh。它没有。编译器抱怨说myCFunction(int *)不接受参数myCFunction(int []); – jython234