下面是我的示例代碼。
void BTBasic_DLL_Call(char * functionName, char * parameters, char * returnString, int * returnValue );
int _tmain(int argc, _TCHAR* argv[])
{
char* fName = "connectProgrammer";
char* parameter = "192.168.1.1";
char* returnString ="0";
int returnValue = 0;
int n = 0;
BTBasic_DLL_Call(fName,parameter,returnString,&returnValue);
printf("%s \n", returnString);
scanf("%d", n);
return 0;
}
void BTBasic_DLL_Call(char * functionName, char * parameters, char * returnString, int * returnValue )
{
returnString = "DLL Test";
*returnValue = 10;
}
在此代碼中,我希望 returnString 將更改為“DLL 測驗”。但是 printf 結果仍然是“0”。誰能幫助如何正確讀取更改后的 returnString 值?
uj5u.com熱心網友回復:
您只能char *在初始化時設定為字串文字。如果您想將此指標更改為指向不同的字串文字,則必須通過指標傳遞它:
void BTBasic_DLL_Call(char * functionName, char * parameters, char ** returnString, int * returnValue) {
*returnString = "DLL Test";
}
uj5u.com熱心網友回復:
簡單的。呼叫者必須傳遞函式要修改的變數的地址(就像您對整數引數所做的那樣)。
// A function defined (ahead of use) is a function declared
// NB: Function receives address as "ptr to ptr"
void BTBasic_DLL_Call(char *functionName, char *parameters, char **returnString, int *returnValue )
{
functionName = functionName; // silence compiler warning
parameters = parameters;
*returnString = "DLL Test";
*returnValue = 10;
}
//int _tmain(int argc, _TCHAR* argv[])
int main() // for demonstration
{
char *fName = "connectProgrammer";
char *parameter = "192.168.1.1";
char *returnString = NULL; // pointer initialised
int returnValue = 0;
// pass the address of the pointer
BTBasic_DLL_Call( fName, parameter, &returnString, &returnValue );
printf("%s \n", returnString);
return 0;
}
DLL Test
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/509957.html
標籤:C指针字符
下一篇:如何在多個函式之間傳遞結構指標
