C 中的指针类型对应C# 里面数据类型怎么表示?

mcdjxiao 2010-01-05 11:17:39
C 中的指针类型对应C# 里面数据类型怎么表示?用ref 或者OUT 修饰可以那?如果可以到底用REF 还是OUT?
比如C char * C#中用REF CHAR 还是OUT CHAR ?这个怎么区分?
或者不对的话怎么转换
我现在要 用C 的DLL
...全文
525 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wei322x 2010-01-06
  • 打赏
  • 举报
回复
C中的指针就是记录保存地址的空间,一般桌面电脑用的CPU都是32bit寻址两个字节)。从386开始就是32位的啦,486,Pentium,II,III,4都是32bit,不过最新的AMD的Athron64就是64bit寻址了,扯远了。
因此任何一个占用32位bit的数据类型都可以保存指针。
在C#中int数据类型就是32位的,因此一般也就用int来表示指针。同样只要是32位的数据类型都基本都可以用来表示指针。
当然,C#还提供了一个转本用来表示指针的数据类型——IntPtr,可以更清楚的表示指针。
mcdjxiao 2010-01-06
  • 打赏
  • 举报
回复
还有别的解释没?
soaringbird 2010-01-05
  • 打赏
  • 举报
回复
还可以用byte*,void*
soaringbird 2010-01-05
  • 打赏
  • 举报
回复
char*在C#里用什么对应,要具体问题具体对待,不同情况下可以用string,StringBuilder,ref byte,byte[],还有万能的IntPtr
mcdjxiao 2010-01-05
  • 打赏
  • 举报
回复
还有别的说法不
jbo126 2010-01-05
  • 打赏
  • 举报
回复
就用ref string不行么?
polarissky 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 septemson 的回复:]
out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化

都是传递地址的,唯一的区别是REF必须初始化,而OUT不需要
[/Quote]
UP
septemson 2010-01-05
  • 打赏
  • 举报
回复
out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化

都是传递地址的,唯一的区别是REF必须初始化,而OUT不需要
flyerwing 2010-01-05
  • 打赏
  • 举报
回复
unsafe *p
swan01 2010-01-05
  • 打赏
  • 举报
回复
对于char* 可以用ref byte[]
卧_槽 2010-01-05
  • 打赏
  • 举报
回复
char *
用stringbuilder
jimeixuehua 2010-01-05
  • 打赏
  • 举报
回复
最好别用,指针属于不安全代码
RFEZGC 2010-01-05
  • 打赏
  • 举报
回复
对于值类型来说(除了intptr),如果函数的原型是指针类型的,最好用ref,而不是out,我的经验,要不然会有一些莫名其妙的错误。

对于引用类型来说(如string),函数的原型必须是指针类型,除非原型指针的二级指针,那就需要ref string 了

对于[Out] [In] 这些修饰参数的属性,一般用到的地方是IDL语言
septemson 2010-01-05
  • 打赏
  • 举报
回复
C#是可以用指针的哦~不过它必须包含在UNSAFE块中,并且不会抛任何逻辑错误。你一定要和C++一样小心的使用指针。
mcdjxiao 2010-01-05
  • 打赏
  • 举报
回复
指针? C# 用指针?
septemson 2010-01-05
  • 打赏
  • 举报
回复
unsafe
{
//必须包含在UNSAFE块里才能用指针
char* p;//注意,C++是 char *p,而c#是char* p
}
建议楼主去看C#高级编程

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧