C语言中 数组作为函数形参传递相当于指针,在函数中不能得到数组长度,只能得到指针长度4

先来看一个例子:

#include<stdio.h>
int main(int argc,char *argv){
    /*定义一个长度为10的char数组*/
    char a[10];
    /*计算该数组长度*/
    int len=sizeof(a)/sizeof(char);

    printf("数组a的长度为:%d",len);

    return 1;
}

输出结果为:数组a的长度为:10

 

接着再看另一个例子:

#include<stdio.h>

/*声明一个函数*/
int test(char a[]);

int main(int argc,char *argv){
    /*定义一个长度为10的char数组*/
    char a[10];
    /*计算该数组长度*/
    int len=test(a);

    printf("数组a的长度为:%d",len);

    return 1;
}

int test(char a[]){
    /*计算该数组长度*/
    return sizeof(a)/sizeof(char);
}

输出结果为:数组a的长度为:4

 

数组作为函数形参传递时,相当于指针,而指针的长度是4个字节,因此显示4,

函数中需要知道数组大小时,需要传入两个参数,一个参数传数组名,另一个传数组大小。

如:int test(char a[],int n);

posted @   SallyBin  阅读(931)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示