C# 怎样取数组变量的指针??
unsafe
{
byte*[] p=&data;
}
这样会出现:错误 1 无法获取托管类型(“byte[]”)的地址和大小,或无法声明指向它的指针
有什么办法获取数组变量data的地址?? 展开
这里介绍C#数组一经创建,就不允许动态的修改长度。指针可以像迭代器一样用于遍历和检索C#数组中的元素。现代C++程序应该尽量使用vector和迭代器类型,而避免使用低级的C#数组和指针。
C#数组和指针
C#数组和vector的区别在于,C#数组的长度是固定的。C#数组一经创建,就不允许动态的修改长度。指针可以像迭代器一样用于遍历和检索C#数组中的元素。现代C++程序应该尽量使用vector和迭代器类型,而避免使用低级的C#数组和指针。只有在强调速度时,才在类实现的内部使用C#数组和指针。
C#数组的缺陷在于没有size()操作,也就是程序员无法知道一个给定C#数组的长度。如果需要更改C#数组的长度,就必须再声明一个更大的C#数组,把原来C#数组的内容copy到新C#数组中去。
引用不能定义C#数组。没有所有元素都是引用的C#数组。
非const变量和要到运行阶段才知道值的const变量都不能用作C#数组定义的维数。
C# 用列:
const unsigned buf_size = 512;
// const 变量.
int staff_size = 217;
// 非const变量.
const unsigned sz = get_size();
// 运行时才确定的const变量.
char buf1[buff_size]; // ok.
char buf2[buff_size + 1];
double salaries[staff_size];
// error, 非const变量做维数.
int test_rest[sz];
// error, 运行时才确定的const变量.
请问怎么调用C/C++语言,,实现获取数组变量的地址?
我用unsafe可以获取int变量地址,,就是不能获取数组变量的地址。。。
unsafe
{
byte*[] p=data;
}
试试.
2019-06-07
fixed(byte* p=&data[0])