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

C:将具有数组的指针传递给函数时,存在运行时错误。为什么?,c,arrays,function,pointers,function-pointers,C,Arrays,Function,Pointers,Function Pointers,这里如果我传递指针,有什么问题?As指针将指向第100个值。因为100是一个int值,它将转到int*a。这个项目应该进展顺利,对吗? 编辑1:如果我在这里用p代替*p,那么它是订单[0]的地址,而不是值100,对吗? 但函数int*a希望值为100。如果我在这个概念上错了,请纠正我,谢谢 返回0; } int加法(int*a,int num元素) { int-total=0; int k; 对于(k=0;k我想得到p的值,所以p所指变量的地址 return 0; } int add_up

这里如果我传递指针,有什么问题?As指针将指向第100个值。因为100是一个int值,它将转到int*a。这个项目应该进展顺利,对吗? 编辑1:如果我在这里用p代替*p,那么它是订单[0]的地址,而不是值100,对吗? 但函数int*a希望值为100。如果我在这个概念上错了,请纠正我,谢谢

返回0;
}
int加法(int*a,int num元素)
{
int-total=0;
int k;
对于(k=0;k
用以下代码替换您的代码:

  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);
} 
#包括
#包括
int加法(int*a,int num_元素);
int main()
{
整数阶[5]={100,220,37,16,98};
int*p;
p=&订单[0];
printf(“总订单为%d\n”,加起来(p,5));
返回0;
}
int加法(int*a,int num元素)
{
int-total=0;
int k;
对于(k=0;k

您忘记了包含2个标题和添加(*p,5)
并删除
*

严重警告编译器。您使用的编译器是什么?如果没有收到任何警告,则需要尽快切换到更好的编译器。如果你确实收到了警告,你应该阅读并给它们加上标题。为什么我要添加p而不是*p,因为int*a是指针。p给出了地址*p给出数组的值。如果我在某些方面错了,请纠正我。谢谢。你的加法函数的原型是‘int add_up(int*a,int num_elements)’,所以第一个参数是integer类型的指针。如果你写add up(*p,5),那么p已经是指针了。你发送的不是'orders'选项卡第一个元素的地址,而是p所指变量的值,这意味着你发送的值是100*p=>我想得到p所指的值=>我想得到p的值,所以p所指变量的地址
  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);
} 
#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);
}