yzmy 发表于 2022-11-29 20:55:30

关于将指针传进函数

#include<stdio.h>
void fun(int *a,int n,int *odd,int *even)
{
int i;
        *odd=0;
        *even=0;
        for(i=0;i<n;i++)
{
if(*a%2==0)
{
   *even=*even+*a;
}
else
{
   *odd=*odd+*a;
}
*a++;
}
}
int main()
{
        int n,i;
        int *odd,*even;
        printf("num:");
        scanf("%d",&n);
        int a;
        printf("input:");
        for(i=0;i<n;i++)
        {
    scanf("%d",&a);
        }
        fun(a,n,odd,even);
        printf("数组a中所有奇数之和为%d\n",*odd);
        printf("数组a中所有偶数之和为%d\n",*even);
}
这个程序哪里错了呀,看起来是因为地址没传进函数,指针初始化没指向东西,但不知道如何操作,于是来这里求助{:10_282:}

jackz007 发表于 2022-11-29 21:03:57

本帖最后由 jackz007 于 2022-11-29 21:37 编辑

#include<stdio.h>

void fun(int * a , int n , int * odd , int * even)
{
      int i                                    ;
      for(i = * odd = * even = 0 ; i < n ; i ++) {
                if(a % 2 == 0) * even += a ;
                else * odd += a               ;
      }
}

int main(void)
{
      int i , n , odd , even                           ;
      printf("num : ")                                 ;
      scanf("%d" , & n)                              ;
      int a                                       ;
      printf("input : ")                               ;
      for(i = 0 ; i < n ; i ++) scanf("%d" , & a)   ;
      fun(a , n , & odd , & even)                      ;
      printf("数组 a 中所有奇数之和为 %d\n" , odd)   ;
      printf("数组 a 中所有偶数之和为 %d\n" , even)    ;
}
      编译运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
num : 15
input : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
数组 a 中所有奇数之和为 64
数组 a 中所有偶数之和为 56

D:\\C>
页: [1]
查看完整版本: 关于将指针传进函数