zoukankan      html  css  js  c++  java
  • @清晰掉 传递数组给函数

    一维数组

    传递数组给函数的3个原则

    1.函数调用时只需传递数组名。

    2.在函数定义中,形参的类型必须与数组的相同,数组的大小不必指定。

    3.函数原型必须定义为参数是一个数组。

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 void sort(int x[], int m);
     4 int main()
     5 {
     6     int i;
     7     int marks[5] = {40, 90, 73, 81, 35};
     8      
     9     printf("Marks before sorting
    ");
    10     for(i = 0; i < 5; i++)
    11           printf("%d ", marks[i]);
    12     printf("
    ");
    13      
    14     sort(marks, 5);
    15     printf("Marks after sorting
    ");
    16     for(i = 0; i < 5; i++)
    17           printf("%d ", marks[i]);
    18     printf("
    ");
    19      
    20     system("pause");
    21 }
    22  
    23 void sort(int x[], int m)
    24 {
    25      int i, j , t;
    26       
    27      for(i = 1; i <= m-1; i++)
    28         for(j =1; j <= m-i; j++)
    29            if(x[j-1] >= x[j])
    30            {
    31               t = x[j-1];
    32               x[j-1] = x [j];
    33               x[j] = t;
    34            }
    35 }

    二维数组

    1.函数调用时只需传递数组名。

    2.在函数定义中,必须使用两个方括号以表明数组为二维的。

    3.必须指定数组第二个维的大小。

    4.函数原型的定义必须与函数头相同。

    //方法一, 形参给出第二维的长度。
    
    //例如:
    
    #include <stdio.h>
    
    void func(int n, char   str[ ][5] )
    
    {
    
    int i;
    
    for(i = 0; i < n; i++)
    
       printf("
    str[%d] = %s
    ", i, str[i]);
    
    }
    
    void main()
    
    {
    
    char* p[3];
    
    char str[][5] = {"abc","def","ghi"};
    
    func(3, str);
    
    }
    
    //方法二,形参声明为指向数组的指针。
    
    //例如:
    
    #include <stdio.h>
    
    void func(int n, char  (*str)[5] )
    
    {
    
    int i;
    
    for(i = 0; i < n; i++)
    
       printf("
    str[%d] = %s
    ", i, str[i]);
    
    }
    
    void main()
    
    {
    
    char* p[3];
    
    char str[][5] = {"abc","def","ghi"};
    
    func(3, str);
    
    }
    
    //方法三,形参声明为指针的指针。
    
    //例如:
    
    #include <stdio.h>
    
    void func(int n, char **str)
    
    {
    
    int i;
    
    for(i = 0; i < n; i++)
    
       printf("
    str[%d] = %s
    ", i, str[i]);
    
    }
    
    void main()
    
    {
    
    char* p[3];
    
    char str[][5] = {"abc","def","ghi"};
    
    p[0] = &str[0][0];
    
    p[1] = str[1];
    
    p[2] = str[2];
    
         func(3, p);
    
    }

    将字符串传递给函数

    1.要传递的字符串必须在定义时声明为函数的形参。例如:

    void display(char item_name[])

    {

      ……

    }

    2.函数原型必须能表示参数是字符串。对于上面的函数定义,其原型可以写做:

    void display(char str[]);

    3.函数调用必须带一个无下标的字符串数组名作为其实参。例如:

    display(name);

    其中,name是在调用函数中已正确声明的字符串数组。

    在C语言中,与数组一样,字符串不能按值传递给函数。

  • 相关阅读:
    基于NIO的服务器模型
    Thinking in java 笔记三
    Thinking in java 笔记二
    Thinking in java 笔记一
    Windows 上的苹果 mac Time Machine 时间机器免费替代品 FreeFileSync 操作指南
    扫描仪扫描文件处理-ABBYY对扫描版PDF文字加黑加粗、去除背景漂白
    扫描仪扫描文件处理-Photoshop批处理无响应问题
    阅读-Calibre Library转PDF、EPUB配置
    扫描仪扫描文件处理-图像扫描加工到生成PDF步骤简述[JAVA版]
    扫描仪扫描文件处理-纸书切割扫描步骤
  • 原文地址:https://www.cnblogs.com/ysdu/p/4741342.html
Copyright © 2011-2022 走看看