首页 > 解决方案 > C:在将具有数组的指针传递给函数时,会出现运行时错误。为什么?

问题描述

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);
} 

标签: carraysfunctionpointersfunction-pointers

解决方案


用以下代码替换您的代码:

#include <stdio.h>
#include <stdlib.h>

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)); 
  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);
}

您忘记包含 2 个标题add_up(*p, 5)并删除*.


推荐阅读