【发布时间】:2019-02-24 11:00:22
【问题描述】:
int add_up (int *a, int num_elements);
int main()
{
int orders[5] = {100, 220, 37, 16, 98};
int *p;
p=&orders[0];
printf("Total orders is %d\n", add_up(*p, 5));
这里如果我传递指针有什么问题?因为指针将指向否。 100 的价值。因为 100 是一个 int 值,它将转到 int *a。程序应该很顺利吧? 编辑 1:如果我在这里给 p 代替 *p 那么它将是 orders[0] 的地址而不是值 100 对吗? 但是函数 int *a 想要正确的值 100。如果我在这个概念上错了,请纠正我,谢谢。
return 0;
}
int add_up (int *a, int num_elements)
{
int total = 0;
int k;
for (k = 0; k < num_elements; k++)
{
total += a[k];
}
return (total);
}
【问题讨论】:
-
认真对待编译器的警告。
-
你用的是什么编译器?如果您没有收到任何警告,则需要尽快切换到更好的编译器。如果您确实收到了警告,您应该已经阅读并处理了这些警告。
标签: c arrays function pointers function-pointers