数组名作为函数参数,进入函数时退化成指针

来源:互联网 发布:怎样增加淘宝店铺流量 编辑:程序博客网 时间:2024/05/16 18:01

发现一个有意思的东西,如下

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

0 0
原创粉丝点击