如果我们通过函数的参数将一个数组传递到参数中去,那么在函数里接收到的是什么东西呢?我们知道如果传递一个普通变量,那么参数接收到的是值,如果传递一个指针变量,参数接收到的也是值,只不过这时的值是地址。那么数组是什么?将数组作为值传给一个函数,在函数的参数里有一个数组变量来接收这个数组,看下到底接收到数组变量的什么东西呢?以minmax作为例子来测试下:

  在minmax函数中能不能计算出数组a的个数?在minmax和main中分别添加printf函数,从结果可以看出,在main里a的大小是68,而在minmax函数中数组a的大小为8,8是什么,在64位机器下,8刚好和一个指针的大小是一样的,和地址的大小是一样的。

 1 #include <stdio.h>
 2 void minmax(int a[],int len,int *max,int *min);
 3 
 4 int main(void) {
 5     int a[]={1,2,3,4,5,6,7,8,9,12,13,14,16,17,21,23,55};
 6     int min,max; 
 7     printf("main sizeofa[]= %lu\n",sizeof(a));     //sizeof a in main
 8     minmax(a,sizeof(a)/sizeof(a[0]),&min,&max);
 9     printf("min=%d,max=%d\n",min,max);
10     return 0;
11 }
12 
13 void minmax(int a[],int len,int *min,int *max){
14     int i;
15     printf("minmax sizeofa[]= %lu\n",sizeof(a));       //sizeof a in minmax
16     *min =*max=a[0];
17     for(i=1;i<len;i++){
18         if(a[i]<*min){
19             *min=a[i];
20         }
21         if(a[i]>*max){
22             *max=a[i];
23         }
24     }
25 }
View Code

相关文章:

  • 2021-09-15
  • 2022-03-05
  • 2021-08-23
  • 2021-07-21
  • 2021-09-21
  • 2021-10-07
  • 2021-12-08
  • 2021-09-30
猜你喜欢
  • 2021-12-09
  • 2022-03-03
  • 2021-09-14
  • 2022-03-09
  • 2022-02-23
  • 2021-12-15
  • 2021-12-05
相关资源
相似解决方案