_北城 2019-09-07 15:54 采纳率: 100%
浏览 237

这几个fun函数中指针n的位置和形式不同,有什么区别啊?我感觉都一样啊!求解释

这几个fun函数中指针n的位置和形式不同,有什么区别啊?我感觉都一样啊!
第一种:

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

void fun (int x, int pp[], int *n)
{
  int i,j=0,count=0;

  for(i=1;i<=x;i++)
  {
    if(x%i==0)
    {
        if(i%2!=0)
        {   pp[j++]=i;
            count++;    
        }
    }
  }
  *n=count;
}

void main ()
{ 
  FILE *wf;
  int  x,aa[1000], n, i ;
  system("CLS");
  printf("\nPlease enter an integer number : \n ") ;
  scanf ("%d", &x) ;
  fun (x, aa, &n) ;
  for (i=0 ; i<n ; i++)
      printf ("%d ", aa [i]);
  printf ("\n ") ;
/******************************/
  wf=fopen("out.dat","w");
  fun (30, aa, &n) ;
  for (i=0 ; i<n ; i++)
      fprintf (wf,"%d ", aa [i]);
  fclose(wf);
/*****************************/

第二种:

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

void fun (int x, int pp[], int *n)
{
  int i,j=0,count=0;
  *n=count;
  for(i=1;i<=x;i++)
  {
    if(x%i==0)
    {
        if(i%2!=0)
        {   pp[j++]=i;
            count++;    
        }
    }
  }
}

void main ()
{ 
  FILE *wf;
  int  x,aa[1000], n, i ;
  system("CLS");
  printf("\nPlease enter an integer number : \n ") ;
  scanf ("%d", &x) ;
  fun (x, aa, &n) ;
  for (i=0 ; i<n ; i++)
      printf ("%d ", aa [i]);
  printf ("\n ") ;
/******************************/
  wf=fopen("out.dat","w");
  fun (30, aa, &n) ;
  for (i=0 ; i<n ; i++)
      fprintf (wf,"%d ", aa [i]);
  fclose(wf);
/*****************************/
}

第三种:

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

void fun (int x, int pp[], int *n)
{
  int i,j=0,count=0;
  n=&count;
  for(i=1;i<=x;i++)
  {
    if(x%i==0)
    {
        if(i%2!=0)
        {   pp[j++]=i;
            count++;    
        }
    }
  }
}

void main ()
{ 
  FILE *wf;
  int  x,aa[1000], n, i ;
  system("CLS");
  printf("\nPlease enter an integer number : \n ") ;
  scanf ("%d", &x) ;
  fun (x, aa, &n) ;
  for (i=0 ; i<n ; i++)
      printf ("%d ", aa [i]);
  printf ("\n ") ;
/******************************/
  wf=fopen("out.dat","w");
  fun (30, aa, &n) ;
  for (i=0 ; i<n ; i++)
      fprintf (wf,"%d ", aa [i]);
  fclose(wf);
/*****************************/
}

  • 写回答

1条回答 默认 最新

  • wxc_87 2019-09-07 16:17
    关注

    第1种情况,*n=count,保存了计算后count的值,
    第2种情况,*n=count,而count的初始值是0,*n=0,这个是没有意义的,返回的就是0,
    第3个种情况指针n取count变量的地址,count变量的值发生变化,对应的指针n的值*n也发生变化,能返回有意义的计算后的count值

    评论

报告相同问题?

悬赏问题

  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 matlab求解平差
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 vue2登录调用后端接口如何实现
  • ¥85 永磁型步进电机PID算法