📜  C |指针基础问题17

📅  最后修改于: 2021-05-25 20:07:58             🧑  作者: Mango

#include
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包含指针大小和整数大小的比率,此ration =与编译器有关。

#include 
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

这个问题的测验

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。