数组在函数间传参

数组在函数间传参

1、学习目标

  • 掌握数组在函数间传参的用法
  • 程序举例

2、函数的传参-数组

  • 全局数组传递方式
  • 复制传递方式
    • 实参为数组的指针,形参为数组名(本质是一个指针变量)
  • 地址传递方式
    • 实参为数组的指针,形参为同类型的指针变量。

3、程序举例

  • 编写函数,计算一个一维整形数组的所有元素的和。

    • 第一种写法:复制传递方式

      #include <stdio.h>
      
      int array_sun(int data[], int n);
      
      int main()
      {
          int a[] = {5,9,10,3,10};
          int sum = 0;
      
          sum = array_sum(a, sizeof(a)/sizeof(int));
      
          printf("sum = %d\n", sum);
      
          return 0;
      }
      //int data[] = a;error int data[]本质上是一个指针
      int array_sum(int data[], int n)
      {
          int ret = 0;
          int i;
      
          for(i = 0; i < n; i++){
              printf("%d\n", data[i]);
              ret += data[i];
          }
      
          return ret;
      }
      

      运行结果:

      $ ./app
      5
      9
      10
      3
      10
      sum = 37
      
    • 第二种写法:指针传递方式

      #include <stdio.h>
      
      int array_sun(int * data, int n);
      
      int main()
      {
          int a[] = {5,9,10,3,10};
          int sum = 0;
      
          sum = array_sum(a, sizeof(a)/sizeof(int));
      
          printf("sum = %d\n", sum);
      
          return 0;
      }
      //int * data= a;right 指针存地址
      int array_sum(int * data, int n)
      {
          int ret = 0;
          int i;
      
          for(i = 0; i < n; i++){
              printf("%d\n", data[i]);
              ret += data[i];
          }
      
          return ret;
      }
      

      运行结果:

      $ ./app
      5
      9
      10
      3
      10
      sum = 37
      
  • 编写函数,删除字符串中的空格

    • 分析示意图:

      字符串函数
    • 程序如下:

      void del_space(char * s1);
      
      int main()
      {	//做删除操作需要进行修改,不能用字符串常量,需要用字符数组存字符串。
          char s[] = "   h  a   sdf  g  ";
      		//char str = "   s  d  g";error 字符串常量不能使用
          puts(s);//原始的
          del_space(s);
          puts(s);//删除后的
      
          return 0;
      }
      
      void del_space(char * s1)
      {
          char * s2;
          s2 = s1;
      
          while(*s1){
              if (*s1 == ' '){
                  s1++;
              }
              else{
                  *s2 = *s1;
                  s1++;
                  s2++;
              }
          }
          *s2 = '\0';
      }
      

      运行结果:

      ./app
         h  a   sdf  g  
      hasdfg
      
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值