首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言传字符数组,求解,该怎么解决

2014-01-23 
C语言传字符数组,求解#includestdio.hvoid test(char array[]){printf(%d;\n, sizeof(array))}void m

C语言传字符数组,求解
#include<stdio.h>

void test(char array[]){
    printf("%d;\n", sizeof(array));

}
void main(){

    char array[5]={'3','4','1','3','1'};
    printf("%d;", sizeof(array));

    test(array);
}
输出5,4
我把array长度改了6,输出6,4;
改7,输出7,4;
为什么下面老是4?
求解
[解决办法]
因为在test中,array看上去虽然是数组,其实就是指针
[解决办法]
数组除了在初始化之外,不能整体操作,当然也不能整个复制到函数中
函数传递时,传递的是指向数组首元素的指针
顺便说一句,[]是指针的操作符,数组使用[]也是通过隐式转化为指针才能使用
[解决办法]
数组名作为函数形参的时候会退化为指针!就是这个原因。
[解决办法]

引用:
数组名作为函数形参的时候会退化为指针!就是这个原因。

void test(char array[])跟void test(char * array)是完全等价的
而任何指针都是一个十六进制的无符号长整型数,所以任何指针的长度都是4.所以你求得肯定是4.
你可以把char 换成其他类型,比如说int 或者double试试,肯定都是4.

热点排行