C |指针基础|问题17

null

#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
喜欢就支持一下吧
点赞14 分享