C 将结构传递给函数的正确方法是什么?
我有一个结构,我想把它传递给一个函数。显然,我犯了一些错误,因为输出总是相同的:C 将结构传递给函数的正确方法是什么?,c,struct,C,Struct,我有一个结构,我想把它传递给一个函数。显然,我犯了一些错误,因为输出总是相同的:(null) 谁能帮帮我吗。 谢谢 问题是您在QueryData中指定了指针。由于C按值传递所有参数,指针将被复制,您只需在QueryData函数中修改本地副本 您需要通过传递一个指针来模拟按引用传递(我说“模拟”,因为C没有按引用传递),在您的例子中,就是传递一个指向指针的指针 比如: BOOL QueryData(char ** String, char ** Name) { ... *Strin
(null)
谁能帮帮我吗。
谢谢
问题是您在
QueryData
中指定了指针。由于C按值传递所有参数,指针将被复制,您只需在QueryData
函数中修改本地副本
您需要通过传递一个指针来模拟按引用传递(我说“模拟”,因为C没有按引用传递),在您的例子中,就是传递一个指向指针的指针
比如:
BOOL QueryData(char ** String, char ** Name)
{
...
*String = AllocateMemory(...);
...
*Name = AllocateMemory(...)
...
}
就像
QueryData(&TestStruct->Value1, &TestStruct->Value2);
问题是您在
QueryData
中指定了指针。由于C按值传递所有参数,指针将被复制,您只需在QueryData
函数中修改本地副本
您需要通过传递一个指针来模拟按引用传递(我说“模拟”,因为C没有按引用传递),在您的例子中,就是传递一个指向指针的指针
比如:
BOOL QueryData(char ** String, char ** Name)
{
...
*String = AllocateMemory(...);
...
*Name = AllocateMemory(...)
...
}
就像
QueryData(&TestStruct->Value1, &TestStruct->Value2);
C中的指针是按值传递的:
QueryData
中的String
和Name
参数是局部变量,它们最初是调用方的TestStruct
中(null)指针的副本。更改QueryData
中的局部变量不会更改存储在结构中的值
您需要传递
QueryData
指向结构本身的指针(即QueryData(TestStruct)
)或指向存储在结构中的两个char*
值的指针(即QueryData(&TestStruct->Value1,&TestStruct->Value2)
),因此QueryData
可以更改结构本身的内容。C中的指针按值传递:QueryData
中的字符串和Name
参数是局部变量,它们最初是调用方TestStruct
中(null)指针的副本。更改QueryData
中的局部变量不会更改存储在结构中的值
您需要传递QueryData
指向结构本身的指针(即QueryData(TestStruct)
)或指向存储在结构中的两个char*
值的指针(即QueryData(&TestStruct->Value1,&TestStruct->Value2)
),这样QueryData
就可以改变结构本身的内容。这个BOOL
东西伤了我的眼睛。为什么有一个“windows”标签,你的问题与你机器的操作系统有关吗?这件事伤了我的眼睛。为什么会有一个“windows”标签,你的问题与你机器的操作系统有关吗?