御笔剑客 发表于 2017-11-22 15:31:30

这段代码为什么运行结果会有问题呢?

#include <stdio.h>
int sum(int *);
int main()
{
    printf("%d",sum((int ){10,20,30,40,50}));
    return 0;
}
int sum(int *arr)
{
    int n,sum;
    for(n=0;n<5;n++)
      sum+=arr;
    return sum;
}

BngThea 发表于 2017-11-22 15:54:13

谁教你这样调用函数的?

御笔剑客 发表于 2017-11-22 16:03:39

BngThea 发表于 2017-11-22 15:54
谁教你这样调用函数的?

不能直接用复合字面量调用函数吗?

BngThea 发表于 2017-11-22 17:31:34

御笔剑客 发表于 2017-11-22 16:03
不能直接用复合字面量调用函数吗?

我不确定一定不能
即使可以,也强烈不建议初学者涉猎这种语法

zqianglh 发表于 2017-11-22 18:22:31

本帖最后由 zqianglh 于 2017-11-22 18:23 编辑

(int ){10,20,30,40,50})
怎么看都不等于 int * arr
java 是通过地址传递的
C/C++应该不行

御笔剑客 发表于 2017-11-22 18:26:51

BngThea 发表于 2017-11-22 17:31
我不确定一定不能
即使可以,也强烈不建议初学者涉猎这种语法

这是c primer plus 第六版P312页上的

御笔剑客 发表于 2017-11-22 18:30:41

BngThea 发表于 2017-11-22 17:31
我不确定一定不能
即使可以,也强烈不建议初学者涉猎这种语法

我知道哪里错了,我的sum未初始化

清欢怅冷 发表于 2017-11-22 18:42:13

sum没有初始化

THA 发表于 2017-11-22 23:46:37

建议不要这样写代码,不便于查找错误,程序可读性也差

橙C 发表于 2017-11-23 11:55:53

{:10_258:} 不说语法问题, 运行的结果是随机数, 第10行 sum 值没有赋值, 是随机数..
页: [1]
查看完整版本: 这段代码为什么运行结果会有问题呢?