C问题:传递函数堆栈中定义的变量

C问题:传递函数堆栈中定义的变量,c,C,这是一只纯粹的虫子吗?或者,如果它没有调用另一个函数,并且st没有传递给myfunc2中的另一个函数,那么它就不是一个bug。当myfunc2获取指针并将其传递给另一个函数时,st是否与myfunc2引用的st相同?这是完全有效的代码。您可以从myfunc2将其传递给任意数量的函数。您在堆栈上分配的变量将保持有效,直到它超出myfunc的范围。这是完全有效的代码。您可以从myfunc2将其传递给任意数量的函数。在堆栈上分配的变量将保持有效,直到它从myfunc超出范围。这取决于MyStruct是

这是一只纯粹的虫子吗?或者,如果它没有调用另一个函数,并且st没有传递给myfunc2中的另一个函数,那么它就不是一个bug。当myfunc2获取指针并将其传递给另一个函数时,st是否与myfunc2引用的st相同?

这是完全有效的代码。您可以从
myfunc2
将其传递给任意数量的函数。您在堆栈上分配的变量将保持有效,直到它超出
myfunc

的范围。这是完全有效的代码。您可以从
myfunc2
将其传递给任意数量的函数。在堆栈上分配的变量将保持有效,直到它从
myfunc

超出范围。这取决于MyStruct是否定义在myfunc2()可见的范围内,以及myfunc2()所需的参数


编辑:通过编辑包含函数原型,它当然是完全有效的代码。

这取决于myfunc2()是否在可见的范围内定义MyStruct,以及myfunc2()需要什么参数


编辑:通过编辑包含函数原型,它当然是完全有效的代码。

将局部变量的地址传递给函数没有错,但请记住,当包含函数返回时,变量超出范围(指针不再有效)。如果
myfunc2()
可能会保存指针供以后使用,请小心。

将局部变量的地址传递给函数没有问题,但请记住,当包含函数返回时,变量超出范围(指针不再有效)。如果
myfunc2()
可能会保存指针以供以后使用,请小心。

如果正确使用
myfunc2
,则显示的代码是有效的。您需要告诉我们
myfunc2
的语义(或显示实现),以便我们判断是否有任何问题。

如果您以正确的方式使用
myfunc2
,您显示的代码是有效的。您需要告诉我们
myfunc2
的语义(或显示实现),以便我们判断是否有任何问题。

传递局部变量的地址而不是数组非常好,相当于传递大小为1的数组


但是,代码的问题是myfunc2()无法知道传递给它的数组的大小。我想如果它只使用数组的第一个元素就可以了,但是应该声明它接受指针,而不是数组。

传递局部变量的地址而不是数组是非常好的,相当于传递大小为1的数组


但是,代码的问题是myfunc2()无法知道传递给它的数组的大小。我想如果它只使用数组的第一个元素就可以了,但是应该声明它接受指针,而不是数组。

st
st
是不同的。您是否有打字错误或在某个地方定义了
st
?这里有什么问题?你得到了一些意想不到的结果吗?为什么你会认为这是一个错误?在我看来,这是完全有效的代码。我假设您打算将变量定义为“st”,而不是“st”,否则这只是一个编译时错误。不清楚您在这里问什么,或者您为什么认为这是一个bug。
st
st
是不同的。您是否有打字错误或在某个地方定义了
st
?这里有什么问题?你得到了一些意想不到的结果吗?为什么你会认为这是一个错误?在我看来,这是完全有效的代码。我假设你想将变量定义为“st”,而不是“st”,否则这只是一个编译时错误。不清楚你在这里问什么,或者你为什么认为这是一个bug。这就是问题所在。该函数不仅使用数组的第一个元素。我想我找到了问题所在,就是问题所在。该函数不仅使用数组的第一个元素。我想我找到了问题所在。
int myfunc2(struct MyStruct st2[])
{ 

   return 0;

}

int myfunc() 
{
   struct MyStruct st;
   myfunc2(&st);
   return 0;
}