社区
C#
帖子详情
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
打赏
收藏
C 中的指针类型对应C# 里面数据类型怎么表示?
C 中的指针类型对应C# 里面数据类型怎么表示?用ref 或者OUT 修饰可以那?如果可以到底用REF 还是OUT? 比如C char * C#中用REF CHAR 还是OUT CHAR ?这个怎么区分? 或者不对的话怎么转换 我现在要 用C 的DLL
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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#高级编程
基于
C#
调用c++Dll结构体数组
指针
的问题详解
C#
调用c++dll文件是一件很麻烦的事情,首先面临的是
数据
类型
转换的问题,相信经常做
c#
开发的都和我一样把学校的那点c++底子都忘光了吧(语言特性类)。 网上有一大堆得转换
对应
表,也有一大堆的转换实例,但是都没有强调一个更重要的问题,就是
c#
数据
类型
和c++
数据
类型
占内存长度的
对应
关系。 如果dll文件
中
只包含一些基础
类型
,那这个问题可能可以被忽略,但是如果是组合
类型
(这个叫法也许不妥),如结构体、类
类型
等,在其
中
的成员变量的长度的申明正确与否将决定你对dll文件调用的成败。 如有以下代码,其实不是dll文件的源码,而是厂商给的c++例子代码 c++
中
的结构体申明 typedef stru
C语言
指针
的用法及
C#
中
的相似概念
而在
C#
中
,虽然没有直接的
指针
概念,但是有一些类似的概念可以实现相似的功能。在本文
中
,我们将探讨C语言
指针
的常见用法,并介绍在
C#
中
实现类似功能的方式。然而,需要注意的是,在使用
指针
或引用
类型
时,我们需要谨慎处理内存和避免潜在的错误。在
C#
中
,我们不能直接声明
指针
变量,但是可以使用引用
类型
来实现类似的功能。在C语言
中
,我们可以通过使用星号(*)来声明
指针
类型
,然后使用取地址符(&)来获取变量的地址。通过引用
类型
,我们可以实现对变量的引用,从而实现对变量的间接访问和修改。在这个示例
中
,我们可以通过。
c与
c#
数据
类型
对应
关系
C++ 与
C#
数据结构
类型
对应
关系表 网上文章1 API与
C#
数据结构
类型
对应
关系表 API与
C#
的
数据
类型
对应
关系表 API
数据
类型
类型
描述
C#
类型
API
数据
类型
类型
描述
C#
类型
WORD 16位无符号整数 ushort CHAR 字符 char LONG 32位无符号整数 int D
C#
与C++和C语言之间
数据
类型
的
对应
一、
C#
与C++
数据
类型
的
对应
表 Windows Data Type .NET Data Type BOOL, BOOLEAN Boolean or Int32 BSTR String BYTE Byte CHAR Char DOUBLE Double DWORD Int32 or UInt32 FLOAT Sin...
C#
调用C++
数据
类型
对应
C#
调用C++
数据
类型
对应
cl.exe/Gz参数指定编译为`__stdcall`调用方式,默认为`__cdecl`
C#
中
的`char`是两个字节C++==dll==
类型
与
C#
类型
对应
关系
C#
调用C++dll的几种传参方式原文链接
C#
调用非托管C++的dll传入Stringbuilder、ref string、ref char等都报错,如mscorlib.dll异常、其他信息: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏 等等,后来发现是dll生成后一直没更新,放错位置了。。。 = =|| 不过也
C#
110,537
社区成员
642,576
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章