这段代码为什么运行结果会有问题呢?
#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
谁教你这样调用函数的?
不能直接用复合字面量调用函数吗? 御笔剑客 发表于 2017-11-22 16:03
不能直接用复合字面量调用函数吗?
我不确定一定不能
即使可以,也强烈不建议初学者涉猎这种语法 本帖最后由 zqianglh 于 2017-11-22 18:23 编辑
(int ){10,20,30,40,50})
怎么看都不等于 int * arr
java 是通过地址传递的
C/C++应该不行 BngThea 发表于 2017-11-22 17:31
我不确定一定不能
即使可以,也强烈不建议初学者涉猎这种语法
这是c primer plus 第六版P312页上的 BngThea 发表于 2017-11-22 17:31
我不确定一定不能
即使可以,也强烈不建议初学者涉猎这种语法
我知道哪里错了,我的sum未初始化 sum没有初始化 建议不要这样写代码,不便于查找错误,程序可读性也差 {:10_258:} 不说语法问题, 运行的结果是随机数, 第10行 sum 值没有赋值, 是随机数..
页:
[1]