#include<stdio.h> void fun( int arr[]) { int i; int arr_size = sizeof (arr)/ sizeof (arr[0]); for (i = 0; i < arr_size; i++) printf ( "%d " , arr[i]); } int main() { int i; int arr[4] = {10, 20 ,30, 40}; fun(arr); return 0; } |
(A) 10 20 30 40 (B) 依赖于机器 (C) 10 20 (D) 北行 答复: (B) 说明: 在C语言中,数组参数总是被视为指针。所以下面两个说法的意思是一样的。
void fun(int arr[]) void fun(int *arr)
[]用于明确函数需要一个数组,但它不会改变任何东西。人们使用它只是为了可读性,以便读者清楚地了解预期的参数类型。底线是,sizeof不应用于数组参数,数组大小(或长度)的单独参数应传递给fun()。所以 在给定的程序中,arr_size包含指针大小和整数大小的比值,这个比值=依赖于编译器。
#include <stdio.h> void fun( int arr[], size_t arr_size) { int i; for (i = 0; i < arr_size; i++) printf ( "%d " , arr[i]); } int main() { int i; int arr[] = {10, 20 ,30, 40}; // Use of sizeof is fine here size_t n = sizeof (arr)/ sizeof (arr[0]); fun(arr, n); return 0; } |
输出: 10 20 30 40
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END