鱼C论坛

 找回密码
 立即注册
查看: 6157|回复: 2

[已解决]数组元素作为函数实参的例题,我不太理解为什么choose函数括号中为什么不可以用a[i]

[复制链接]
发表于 2017-8-23 23:24:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
void main()
{
        int a[10]={1,2,3,4,-1,-2,-3,-4,2,3},b,i;
        int choose(int a[i]);
    for(i=0;i<10;i++)
        {
        b=choose(a[i]);
                printf(" %d ",b);
        }
      
}
     int choose(int a[i])
         {
                 if(a[i]>0)
                 {
                 return a[i];
                 }
                 else
                 {
                 return 0;
                 }
         }
现在的错误是五个,额我将函数choose中a[i]的位置换成x,就可以正常运行,我不太理解为什么,希望老师们能赐教,谢谢
最佳答案
2017-8-23 23:49:26
本帖最后由 ba21 于 2017-8-23 23:51 编辑

2017-08-23_234005.png

//代码1传入每个值

  1. #include<stdio.h>

  2. void main()
  3. {
  4.         int a[10]={1,2,3,4,-1,-2,-3,-4,2,3};
  5.                 int b,i;
  6.         int choose(int a); //形参为值

  7.                
  8.    
  9.                 for(i=0;i<10;i++)
  10.         {
  11.                         b=choose(a[i]); //实参传入 值
  12.             printf(" %d ",b);
  13.         }
  14.                 printf("\n");
  15.       
  16. }
  17. int choose(int a)//形参为值
  18. {
  19.          if(a>0)
  20.          {
  21.                         return a;
  22.          }
  23.          else
  24.          {
  25.                         return 0;
  26.          }
  27. }
复制代码


//代码2传地址

  1. #include<stdio.h>

  2. void main()
  3. {
  4.         int a[10]={1,2,3,4,-1,-2,-3,-4,2,3};
  5.                 int b,i;
  6.         int choose(int a[], int index);//形参 数组地址, index数组下标

  7.                
  8.    
  9.                 for(i=0;i<10;i++)
  10.         {
  11.                         b=choose(a, i);//实参 传入数组地址,i数组下标
  12.             printf(" %d ",b);
  13.         }
  14.                 printf("\n");
  15.       
  16. }
  17. int choose(int a[], int index)//形参 数组地址, index数组下标
  18. {
  19.          if(a[index]>0)
  20.          {
  21.                         return a[index];
  22.          }
  23.          else
  24.          {
  25.                         return 0;
  26.          }
  27. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-8-23 23:25:38 | 显示全部楼层
   题目:判别一个整数数组a[10]={1, 2, 3, 4, -1, -2, -3, -4, 2, 3}中各元素的值,若大于0 则输出该值,若小于等于0则输出0值。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-23 23:49:26 | 显示全部楼层    本楼为最佳答案   
本帖最后由 ba21 于 2017-8-23 23:51 编辑

2017-08-23_234005.png

//代码1传入每个值

  1. #include<stdio.h>

  2. void main()
  3. {
  4.         int a[10]={1,2,3,4,-1,-2,-3,-4,2,3};
  5.                 int b,i;
  6.         int choose(int a); //形参为值

  7.                
  8.    
  9.                 for(i=0;i<10;i++)
  10.         {
  11.                         b=choose(a[i]); //实参传入 值
  12.             printf(" %d ",b);
  13.         }
  14.                 printf("\n");
  15.       
  16. }
  17. int choose(int a)//形参为值
  18. {
  19.          if(a>0)
  20.          {
  21.                         return a;
  22.          }
  23.          else
  24.          {
  25.                         return 0;
  26.          }
  27. }
复制代码


//代码2传地址

  1. #include<stdio.h>

  2. void main()
  3. {
  4.         int a[10]={1,2,3,4,-1,-2,-3,-4,2,3};
  5.                 int b,i;
  6.         int choose(int a[], int index);//形参 数组地址, index数组下标

  7.                
  8.    
  9.                 for(i=0;i<10;i++)
  10.         {
  11.                         b=choose(a, i);//实参 传入数组地址,i数组下标
  12.             printf(" %d ",b);
  13.         }
  14.                 printf("\n");
  15.       
  16. }
  17. int choose(int a[], int index)//形参 数组地址, index数组下标
  18. {
  19.          if(a[index]>0)
  20.          {
  21.                         return a[index];
  22.          }
  23.          else
  24.          {
  25.                         return 0;
  26.          }
  27. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-18 17:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表