C:在将具有数组的指针传递给函数时,存在运行时错误。为什么?

问题描述 投票:0回答:1
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那么它将是订单[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
1个回答
1
投票

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

#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)并删除*

© www.soinside.com 2019 - 2024. All rights reserved.