回 帖 发 新 帖 刷新版面

主题:菜鸟求助

char var[10]
int test(char var[])
{
return sizeof(var)};
求代码结果及详解,谢谢

回复列表 (共8个回复)

沙发

代码结果完全可以在机器上运行出来。为什么不试试呢?
结果是4
原因是sizeof(var) 等价你问一个指针的大小。4个字节,32个数据位。

板凳

深圳市华信群英科技有限公司与知名通信软件公司正式签订定向输送人才的合作协议
针对想进入IT软件行业的有志人士提供专业的企业内训
实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段
实训前就签订就业安置协议,岗前实训后入职
不仅学费优惠而且是企业定向培训定向招聘,百分百保证就业
有意向请登录www.szctt.com,或加QQ:1179397962做详细咨询

3 楼

值是10,[code=c]
请填写代码
[/code]
int main()
{
    int i;
    char var[10];
    cout << "value = " << sizeof(var) << endl;
    cin >> i;
    return sizeof(var);
}

运行结果value = 10

4 楼

[quote]值是10,[code=c]
请填写代码
[/code]
int main()
{
    int i;
    char var[10];
    cout << "value = " << sizeof(var) << endl;
    cin >> i;
    return sizeof(var);
}

运行结果value = 10[/quote]

结果当然不一样了。是个概念问题啦。
char var[10]
int test(char var[])
{
return sizeof(var)};
这里,sizeof(var),var在参数里是什么呢?其实是个指向数组首地址的指针,返回4,就是32位数据位,一个指针的大小。我上面解释过了。
而如果是
char var[10];
    cout << "value = " << sizeof(var) << endl;
得到的当然是10,因为你数组大小就是10个char。不知道你明白否?
一个是指针,一个是数组

5 楼

楼上正解。数组做形参就是指针啦!4个字节。

6 楼


返回的是4,楼上版主高见

7 楼

在Turbo C上两个字节,在C++上是4个字节,编译器不同,结果不同,是地址指针

8 楼

那个程序可以如下等效:
char var[10]
int test(char *a)
{
return sizeof(a);
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册