DelphiC中更快的参数传递

DelphiC中更快的参数传递,第1张

概述我有2个部分的应用程序,Delphi和C,我有2个问题  1.将参数传递给Delphi的最快方法是什么? procedure name(Data: string); // Data is Copied to another location before passing so its slowprocedure name(var Data: string); // Data is Passed 我有2个部分的应用程序,Delphi和C,我有2个问题
 1.将参数传递给Delphi的最快方法是什么?

procedure name(Data: string); // Data is copIEd to another location before passing so its slowprocedure name(var Data: string); // Data is Passed by pointer,Fasterprocedure name(const Data: string); // unkNown@H_419_13@  

>我想通过c中的指针传递参数,我有一个char数组和一个函数,我不想通过整个数组,切掉它的第一部分并通过其余部分

voID testfunction(char **Data){    printf("Data = %d\n",*Data);    return;}int main(){    char Data[] = "TEST FUNCTION";    testfunction(&&Data[4]);        // Error    return 0;}@H_419_13@  

谢谢

解决方法 Delphi字符串驻留在堆上,并始终通过指针传递.您的第一个按值传递的示例不正确.不会复制按值传递的字符串.仅复制参考.这对于字符串是可行的,因为它们具有魔术写时复制行为.将复制按值传递的动态数组.

传递字符串时使用const具有最佳性能,因为编译器可以优化引用计数代码.

您的C代码有点混淆.你不想要char **,而是你想要char *.请记住,C字符串char *只是指向以null结尾的内存块的指针.您不需要指向C字符串,因为它已经是指针.

你的意思是%s而不是%d肯定.要传递从第5个字符开始的C字符串,请写入数据4.

voID testfunction(char *Data) {     printf("Data = %s\n",Data); }int main() {    char Data[] = "TEST FUNCTION";    testfunction(Data+4);    return 0;}@H_419_13@                            	          总结       

以上是内存溢出为你收集整理的Delphi / C中更快的参数传递全部内容,希望文章能够帮你解决Delphi / C中更快的参数传递所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1223749.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存