C# 怎样取数组变量的指针??

例如:byte[]data=newdata[3]{1,2,3}unsafe{byte*[]p=&data;}这样会出现:错误1无法获取托管类型(“byte[]”)的地址和... 例如: byte[] data=new data[3] {1,2,3}
unsafe
{
byte*[] p=&data;
}
这样会出现:错误 1 无法获取托管类型(“byte[]”)的地址和大小,或无法声明指向它的指针
有什么办法获取数组变量data的地址??
展开
 我来答
百度网友9371e9c
推荐于2018-02-28 · TA获得超过267个赞
知道小有建树答主
回答量:164
采纳率:71%
帮助的人:54万
展开全部

呵呵,刚一时兴起,给你做了个例子。在mvc里写的代码,在页面上输出的。


页面上输出保存在ViewBag里的指针数组的数据。数据是str拼接的。

dong_1984dd
推荐于2016-02-20 · TA获得超过1.1万个赞
知道小有建树答主
回答量:1070
采纳率:100%
帮助的人:231万
展开全部
  1. 这里介绍C#数组一经创建,就不允许动态的修改长度。指针可以像迭代器一样用于遍历和检索C#数组中的元素。现代C++程序应该尽量使用vector和迭代器类型,而避免使用低级的C#数组和指针。 

  2. C#数组和指针

  3. C#数组和vector的区别在于,C#数组的长度是固定的。C#数组一经创建,就不允许动态的修改长度。指针可以像迭代器一样用于遍历和检索C#数组中的元素。现代C++程序应该尽量使用vector和迭代器类型,而避免使用低级的C#数组和指针。只有在强调速度时,才在类实现的内部使用C#数组和指针。

  4. C#数组的缺陷在于没有size()操作,也就是程序员无法知道一个给定C#数组的长度。如果需要更改C#数组的长度,就必须再声明一个更大的C#数组,把原来C#数组的内容copy到新C#数组中去。

  5. 引用不能定义C#数组。没有所有元素都是引用的C#数组。

  6. 非const变量和要到运行阶段才知道值的const变量都不能用作C#数组定义的维数。

  7. 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];   

    // ok, 常量计算表达式.  

    double salaries[staff_size];  

    // error, 非const变量做维数.  

    int test_rest[sz];  

    // error, 运行时才确定的const变量.  

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yxj120600
2012-05-06 · TA获得超过246个赞
知道小有建树答主
回答量:471
采纳率:0%
帮助的人:277万
展开全部
C#与Java都是不支持指针的,但C#可以调用C/C++语言,你试着尝试调用吧。
更多追问追答
追问
请问怎么调用C/C++语言,,实现获取数组变量的地址?
我用unsafe可以获取int变量地址,,就是不能获取数组变量的地址。。。
追答
unsafe
{
byte*[] p=data;
}
试试.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-06-07
展开全部
unsafe 下

fixed(byte* p=&data[0])
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式