最近开始接触C#,遇到一些问题,麻烦指点下,先谢了
在C++中 byte *p=new byte[10],p是位于栈中的,具体存储位置在堆中
那么在C#中,byte[]p=new byte[10] 是不是跟C++中一样,p位于栈中,存储位置位于堆中?我查了一下,好像C#中没指针,那p又是什么?
在C++中 byte *p=new byte[10],p是位于栈中的,具体存储位置在堆中
那么在C#中,byte[]p=new byte[10] 是不是跟C++中一样,p位于栈中,存储位置位于堆中?我查了一下,好像C#中没指针,那p又是什么?
正确
p是引用类型的。跟指针类似
Object ob1 = new Object();
int* p1 = *ob1;
int* p2 = p1;
Object ob2 = &p2;
相当于
Object ob1 = new Object();
Object ob2 = ob1;
int* p1 = *i1;
int* p2 = p1;
int i2 = &p2;这回呢,算指针了么?高手赐教
http://blog.csdn.net/yfqvip/archive/2009/09/24/4588254.aspx
当然也可以用 不过需要使用unsafe 关键字
C#程序一般不建议这么做
对于你写的这行代码,C#分配和C++是一样的。p在栈中,但是地址在堆中。
对于C#分配内存有一条铁的规律:所有引用类型一律分配在堆中,数组是引用类型,不是值类型另外C#中有指针的微软保留了它。主要针对值类型和计算使用