VB往C语言函数传字符串 vb自定义函数传递数组

vb.net 调用C语言可执行程序并传值?

在c语言中每一个变量都有两个属性一个是值,一个是址。比如inta=2;变量a的值是2,变量a的地址,可以用取地址

创新互联是一家专注于网站建设、网站设计与策划设计,左云网站建设哪家好?创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:左云等地区。左云做网站价格咨询:18982081108

操作符

获取,即a。因此以C语言的函数传递中具备两种方式传递参数,一种是传址,一种传值。比如voidf1(intv){;}//函数f1v

c语言字符串在函数间传递

#includestdio.h#includestring.hchar *start(char *wz);int main(){ char *sys = NULL; char xz,wz[99]="www"; scanf("%s",xz); if (xz=='1') sys=start(wz);/*将wz值传入start*/ printf("%s",sys);

if (sys != NULL) // 注意:分配内存以后一定要释放

free(sys); return 0;}char *start(char *wz){

char* str = (char*)malloc(99); // 堆中分配内存

strcpy(str, "am start -a android.intent.action.VIEW -d http://"); strcat(str,wz); return str; }

其实不建议以这种方式来写,start函数可以写成2元函数,一个函数传入参数,一个函数传出结果。

void start(char* pOut, char* pIn)

{

strcpy(pOut, "am start -a android.intent.action.VIEW -d http://");strcat(pOut, pIn);

}

vb.net如何与c语言做的dll互相传递字符串

首先是C的DLL(我的项目叫ConsoleApplication2.dll):

#include Windows.h

// 导出Test函数,供外部使用

extern "C" __declspec(dllexport) BSTR __cdecl Test(LPSTR p);

BOOL WINAPI DllMain(

HINSTANCE hinstDLL,

DWORD fdwReason,

LPVOID lpReserved)

{

switch (fdwReason)

{

case DLL_PROCESS_ATTACH: break;

case DLL_THREAD_ATTACH: break;

case DLL_THREAD_DETACH: break;

case DLL_PROCESS_DETACH: break;

}

return TRUE;

}

BSTR __cdecl Test(LPSTR p)

{

p[0] = 'X';

return SysAllocString((BSTR)p);

}

然后是VB.Net项目:

Imports System.Runtime.InteropServices

Imports System.Text

Module Module1

REM 生成的是ConsoleApplication2.dll,名字与C里面相同

DllImport("ConsoleApplication2.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.Cdecl)

Public Function Test(MarshalAs(UnmanagedType.LPTStr) ByVal str As StringBuilder) As MarshalAs(UnmanagedType.BStr) String

End Function

Sub Main()

Dim str As StringBuilder = New StringBuilder("Hello")

Dim rstr As String = Test(str)

Console.WriteLine(rstr)

Console.ReadKey()

End Sub

End Module

运行结果:

c语言如何传递字符串?

c语言函数中传递字符串,可以分为两种情况,一种是将字符串作为参数,一种是将字符串作为返回值 ,当使用字符串作为返回值时,切记不要传递局部字符数组。下面是一个示例代码:

#include stdio.h

#include string.h

#include stdlib.h

void f(char *str) {  //字符串作参数

printf(str);

}

char * r() {  //字符串作返回值 

//使用动态分配内存,不要使用局部变量比如

//char buf[80]; 因为局部变量在函数结束时,栈区变量已被回收

char *str = (char *)malloc(256 * sizeof(char)); 

if (str==0) { printf("can't alloc mem\n"); return 0;}

else memset(str, 0x00 ,sizeof(char) * 256);

return str;  //

}

int main()

{

char *pstr = r();

if (pstr!=0) strcpy(pstr, "hello world\n");

f(pstr);

free(pstr);

return 0;

}


网站题目:VB往C语言函数传字符串 vb自定义函数传递数组
本文地址:http://bzwzjz.com/article/dojgdso.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 网站建设 app网站建设 网站设计 重庆网站建设 成都营销网站制作 梓潼网站设计 成都网站建设 响应式网站设计 成都商城网站建设 手机网站建设 公司网站建设 成都网站建设 专业网站建设 手机网站建设 网站建设 成都企业网站制作 重庆手机网站建设 网站建设推广 成都网站建设 高端网站设计 重庆网站建设 手机网站制作设计