foo(int arr [])和foo(int arr [10])有什么区别?

Ton*_*ark 5 c function

C中的两个函数有什么区别吗?

void f1(int arr[]) {    
//some code...  
}
void f2(int arr[10]) {
//some code
}
Run Code Online (Sandbox Code Playgroud)

f1函数中第一个数组的大小是多少?

hac*_*cks 6

c中的两个函数有什么区别吗?

这里没什么区别.两者都将被int *arr编译器解释为当数组用作函数参数时转换为指向其第一个元素的指针.

f1函数中第一个数组的大小是多少?

严格来说,这里没有数组.它唯一指向一个int.如果您将使用sizeof(arr),那么您将获得等于的值sizeof(int *).

当参数类型是指向数组的指针时,需要参数中的数组大小.在这种情况下,您需要指定数组的大小,因为每个大小使指针指向不同的类型.

void f3(int (*arr)[10]); // Expects a pointer to an array of 10 int
Run Code Online (Sandbox Code Playgroud)