Delphi中Integer与longInt的联系与区别
发布网友
发布时间:2022-04-01 14:02
我来回答
共4个回答
热心网友
时间:2022-04-01 15:31
两个都是整形,只是存放的数据大小不一样。。
就好比两个杯子
lnteger是中杯
longint是大杯
所以主要看你存放的整形有多大,太大的话就用longint 否则integer也差不多
不要觉得longint大,随便存放就都用这个,大的占用空间也大,所以选择合适的才是最好的
热心网友
时间:2022-04-01 16:49
VC当中没有string类型,一般只有char, wchar_t, TCHAR等类型
可以参考
delphi中的string类型是一类比较特殊的字符串类型。
Delphi中String分为Short String和Long String。
32位版本delphi中默认都使用Long String做为String。Long String的容量只受有限内存的*,在32位系统中最多可有4G
并加入了对pchar的内建支持
具体实现是一块动态分配的内存块,内存块的前两个dword
保存着此字符串的长度和引用计数器等等信息,
因为是用一个dword保存长度,因此字符串长度可以非常大
呵呵,具体多大其实根本没有意义,反正用不完了 :)
然后字符串的末尾以#0结束,以兼容window用的sz字符串类型
所谓pchar(str)转换,其实只是取字符串的头指针罢了
(注意这里的头指针直接指向字符串数据,不包括字符串数据头
那两个dword)
值得注意的是,delphi里面提供了一种非常强大的copy on write机制
详细一点说就是你如果把一个字符串直接复制到另外一个字符串类型
用:=复制,则delphi只是在内存中维护一份字符串数据,相当于指针赋值
而把此字符串的引用计数器加一,两个字符串变量都指向这个字符串数据
但是一旦你写了其中一个字符串,delphi则自动将此字符串在内存中
复制一遍,把你的修改反映到新的字符串数据中,这样两个变量就自动
指向不同的字符串数据,这些支持都是在底层自动实现的,如果你只是
使用标准的string类型,完全可以不关心,delphi全部自己搞定
但是麻烦的是,如果你用pchar类型,或者试图把字符串传递个其他语言
编写的模块,就必须考虑上述情况,因为一个pchar类型,其实只是一个
指向字符数组的指针,是不存在string类型中负偏移的那些数据的
虽然delphi内建提供了string与pchar的转换,但是如果跨语言
或者调用api时,某些情况下必须予以考虑……
所以delphi的string是强大的,不用搞那么麻烦的指针,但是如果跟VC交互,那你不得不用pchar指针类型跟VC实现交互。该死的VC的指针。。。。。。
热心网友
时间:2022-04-01 18:24
Integer与longInt,都是整型,但后一个占用的内存要多.如果数字不是特大,不要使用长整型.
热心网友
时间:2022-04-01 20:15
一样.