2 namedajipai namedajipai 于 2016.03.31 22:26 提问

Visula Basic中关于new的一点点疑惑

在VB6.0语言中没有指针,但是为什么通过字符串可以传指针给C++,为什么VB的字符串不需要new,它的内存分配在哪里呢?

2个回答

caozhy
caozhy   Ds   Rxr 2016.03.31 23:20
已采纳

VB的字符串的本质就是指针,这就是为了考虑跨语言兼容性而特意设计的。但是和标准的字符串不同,VB的字符串是有长度的,这个长度被标记在字符串的开头,当你传递字符串的时候,编译器会自动把字符串数组的首地址传过去,所以可以兼容C++。

pppploi8
pppploi8   2016.03.31 22:38

这个要看你理解的指针是什么样的了...
如果指针就是指向内存地址的变量,那么任何语言都有指针,唯一的问题是语言是否提供了指针语法给你更加底层的使用
VB6真没什么接触,不过我觉得应该它也是一样的...只不过并没有直接提供指针语法给你使用,但并不是没有指针
至于内存分配...没接触不敢乱说,不过对于内存分配这件事其实要解决还是不麻烦的,随便举个例子,比如说把字符串视为对象,声明了则自动创建对象并设置好缓冲区,赋值则给缓冲区写内容,缓冲区写满就申请更大的内存来复制原来内容,并自动删除原缓冲区使用内存....文本相连也一样,至于传值的时候单独传缓冲区内存地址就可以了,反正C风格字符串可以根据结尾\0来识别尺寸,在参数拿到后内部自动创建对象并且复制或者直接引用缓冲区的文本就是了
当然VB6内部内存管理可能比这个简单,也可能比这个复杂,没接触就不乱说了...只是觉得字符串给以传指针并不奇怪,具体内存怎么分配坐等其他大神解释←u←

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Visual Basic.NET入门.pdf
适合visual basic入门学习,里面描述了visual basic.net的语言体系结构,visual basic.net的常用控件,visual basic.net的oop结构,数据库访问技术,visual basic.net的多线程,visual basic.net的数组、文件和出错处理。
Visula Basic程序设计理论与实践
Visula Basic程序设计理论与实践
Visula Basic 6.0数据库开发学习教程.pdf
Visula Basic 6.0数据库开发学习教程.pdf
Visual Basic数据库开发实例精粹(PDF)
备注:这是书,而不是源代码<br><br>连接地址:http://www.dearbook.com.cn/book/34254#bookCatalog<br><br>第l章 Visual Basic数据库开发技巧<br> 1.1 使用ADO操纵数据库<br> 1.2 封装数据库操作<br> 1.3 采用三层架构设计模式<br> 1.4 Visual Basic开发工具对比<br> 1.5 Viual Basic学习的相关建议<br> 1.6 数据库设计和开发技巧<br> 1.7 小结<br>第2章 股票信息管理系统<br> 2.1 系统概述<br> 2.2 系统设计<br> 2.3 数据库设计<br> 2.4 数据库的生成与配置<br> 2.5 用Visual Basic 6.0开发股票信息管理系统<br> 2.6 股票信息管理系统主界面设计<br> 2.7 股票信息操作模块<br> 2.8 股票信息分析模块<br> 2.9 用户管理模块<br> 2.10 用户登录模块<br> 2.11 经验与技巧<br> 2.12 系统的调试与注意事项<br> 2.13 系统的编译和发行<br> 2.14 小结<br>第3章 访客管理系统<br> 3.1 系统概述<br> 3.2 系统设计<br> 3.3 数据库设计<br> 3.4 数据库的生成与配置<br> 3.5 公共模块<br> 3.6 用户登录界面设计<br> 3.7 用户管理界面设计<br> 3.8 用户操作记录界面设计<br> 3.9 关于界面设计<br> 3.10 系统主界面设计<br> 3.11 开发难点与技巧<br> 3.12 系统的调试与注意事项<br> 3.13 系统的编译和发行<br> 3.14 小结<br>第4章 企业内部业务联系系统<br> 4.1 系统概述<br> 4.2 系统设计<br> 4.3 数据库设计<br> 4.4 数据库的生成与配置<br> 4.5 创建客户端界面应用程序<br> 4.6 系统主界面设置<br> 4.7 加入公共模块<br> 4.8 加入界面设置模块<br> 4.9 用户登录模块<br> 4.10 提取信息模块<br> 4.11 查看信息模块<br> 4.12 发送信息模块<br> 4.13 查询信息模块<br> 4.14 删除信息模块<br> 4.15 用户管理模块<br> 4.16 开发难点与技巧<br> 4.17 系统的调试与注意事项<br> 4.18 系统的编译和发行<br> 4.19 小结<br>第5章 客户管理系统<br> 5.1 系统概述<br> 5.2 系统设计<br> 5.3 数据库设计<br> 5.4 数据库的生成与配置<br> 5.5 用Visual Basic开发客户管理事务处理组件<br> 5.6 在客户管理系统中使用客户管理组件<br> 5.7 客户管理主界面设置<br> 5.8 加入公共模块<br> 5.9 客户类型信息管理模块<br> 5.10 客户信息管理模块<br> 5.1l 客户合作信息管理模块<br> 5.12 事件提醒信息管理模块<br> 5.13 开发难点与技巧<br> 5.14 系统的调试与注意事项<br> 5.15 系统的编译和发行<br> 5.16 小结<br>第6章 超市进销存管理系统<br> 6.1 系统概述<br> 6.2 系统设计<br> 6.3 数据库设计<br> 6.4 数据库的生成与配置<br> 6.5 创建应用程序结构<br> 6.6 开发业务逻辑处理组件<br> 6.7 开发基本界面组件<br> 6.8 用户界面端应用程序设计<br> 6.9 经验与技巧<br> 6.10 系统的调试与注意事项<br> 6.11 系统的编译和发行<br> 6.12 小结<br>第7章图书馆管理系统<br> 7.1 系统概述<br> 7.2 系统设计<br> 7.3 数据库设计<br> 7.4 数据库的生成与配置<br> 7.5 网络通讯协议的设计<br> 7.6 服务器端公共模块<br> 7.7 服务器端主界面设计.<br> 7.8 客户端公共模块<br> 7.9 客户端连接服务器界面设计<br> 7.10 客户端图书借阅界面设计<br> 7.11 客户端图书归还界面设计<br> 7.12 客户端缴纳罚款界面设计<br> 7.13 客户端图书类别管理界面实现代码<br> 7.14 客户端图书信息管理界面实现代码<br> 7.15 客户端读者信息管理界面实现代码<br> 7.16 客户端管理员信息管理界面实现代码<br> 7.17 客户端图书借阅统计界面实现代码<br> 7.18 客户端主界面设计<br> 7.19 开发难点与技巧<br> 7.20 系统的调试与注意事项<br> 7.21 系统的编译和发行<br> 7.22 小结<br>
每天总结一点点,每天进步一点点!
今天在老师的指导下又捡起许多
工作总结 每天进步一点点。
用关键字记录一些工作中的学习收获和心得。 2012年8月28日 1.我可以认为delete表后,那个啥高水位不变。原因是:delete并没有真正删除,只是把块标记一下? 发现只有delete的才能 这样子还原 INSERT INTO emp  SELECT * FROM emp AS OF SCN 5176861;如果用truncate删除的。。。再用SCN去还原的话。。就说无法读取数
visula basic 课设
大部分vb课设源码和论文都有,包括老师点名,水费管理
【每天积累一点点】将PopupWindow显示在指定位置
//以想在控件tvMl的右下角显示PopupWindow为例(popupWindow的右上角在tvMl的右下角) View popPhotoView = LayoutInflater.from(this).inflate(R.layout.popup_ml_choose, null); mlWindow = new PopupWindow(popPh
New Activity探索(二):BasicActivity
现在来看看BasicActivity有什么不同
Javascript中new的疑惑
// 加不加new结果都一样 var obj = new Function('var temp = 100;this.temp = 200;return temp + this.temp;'); alert(typeof(obj)); // function alert(obj()); // 300 var obj = Function('var temp = 100;this.temp =