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