发现一个有意思的东西,如下
#include "stdio.h"
int size_str(char *str);
int size_arr(int *arr);
int main(void){
int arr[100];
char str[100];
printf("sizeof(arr) is %d\n",sizeof(arr));
printf("size_arr(arr) is %d\n",size_arr(arr));
printf("sizeof(str) is %d\n",sizeof(str));
printf("size_str(str) is %d\n",size_str(str));
return 0;
}
int size_str(char *str){
return sizeof(str);
}
int size_arr(int *arr){
return sizeof(arr);
}
当数组名作为函数参数进入函数里面时,已经成为一个指针,不再像原来一样代表其数组,
所以如果在函数中对数组名用sizeof,得到的结果只是一个指针的大小,而不是其数组的大小,
当希望在函数中求数组大小,应该利用其他方法,或者是将数组的大小跟数组名一起
作为参数传递给函数,如 fun(char *str, int n)