在c語言中每一個變量都有兩個屬性一個是值,一個是址。比如inta=2;變量a的值是2,變量a的地址,可以用取地址

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設、網(wǎng)站設計與策劃設計,左云網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設10年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:左云等地區(qū)。左云做網(wǎng)站價格咨詢:18982081108
操作符
獲取,即a。因此以C語言的函數(shù)傳遞中具備兩種方式傳遞參數(shù),一種是傳址,一種傳值。比如voidf1(intv){;}//函數(shù)f1v
#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函數(shù)可以寫成2元函數(shù),一個函數(shù)傳入?yún)?shù),一個函數(shù)傳出結果。
void start(char* pOut, char* pIn)
{
strcpy(pOut, "am start -a android.intent.action.VIEW -d http://");strcat(pOut, pIn);
}
首先是C的DLL(我的項目叫ConsoleApplication2.dll):
#include?Windows.h
//?導出Test函數(shù),供外部使用
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語言函數(shù)中傳遞字符串,可以分為兩種情況,一種是將字符串作為參數(shù),一種是將字符串作為返回值 ,當使用字符串作為返回值時,切記不要傳遞局部字符數(shù)組。下面是一個示例代碼:
#include?stdio.h
#include?string.h
#include?stdlib.h
void?f(char?*str)?{??//字符串作參數(shù)
printf(str);
}
char?*?r()?{??//字符串作返回值?
//使用動態(tài)分配內存,不要使用局部變量比如
//char?buf[80];?因為局部變量在函數(shù)結束時,棧區(qū)變量已被回收
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語言函數(shù)傳字符串 vb自定義函數(shù)傳遞數(shù)組
當前地址:http://chinadenli.net/article30/dojgdso.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、網(wǎng)站建設、手機網(wǎng)站建設、響應式網(wǎng)站、用戶體驗、營銷型網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)