我有以下功能
void DoSomething(int start[10], int end[10])
Run Code Online (Sandbox Code Playgroud)
当我通过它来称呼它
void Do(void)
{
int start[10] = {1,2,3,4,5,6,7,8,9,0};
int end[10] = {1,2,3,4,5,6,7,8,9,0};
DoSomething(start,end);
}
Run Code Online (Sandbox Code Playgroud)
我在堆栈上放了两个指针(8个字节全部在一起)还是两个40个字节的数组?
在C中,函数的数组参数实际上是指针,因此您在堆栈上放置两个指针,不会生成数组的副本.
如果签名DoSomething是:
void DoSomething(int *start, int *end);
Run Code Online (Sandbox Code Playgroud)