在C中堆栈类型的脚印

PVi*_*itt 1 c arrays stack

我有以下功能

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个字节的数组?

Ale*_*x B 7

在C中,函数的数组参数实际上是指针,因此您在堆栈上放置两个指针,不会生成数组的副本.

如果签名DoSomething是:

void DoSomething(int *start, int *end);
Run Code Online (Sandbox Code Playgroud)