C专家编程 第10章 再论指针 10.4 向函数传递一个一维数组

发布于:2022-12-21 ⋅ 阅读:(133) ⋅ 点赞:(0)

    向函数传递一个一维数组
    在C语言中,任何一维数组均可以作为函数的实参。形参被改为指向数组第一个元素的指针,所以需要一个约定来提示数组的长度。一般有两个基本方法:
    *增加一个额外的参数,表示元素的数目(argc就是起这个作用)
    *赋予数组最后一个元素一个特殊的值,提示它是数组的尾部(字符串结尾的‘\0’字符就是起这个作用)。
    这个特殊值必须不会作为正常的元素值在数组中出现。
    二维数组要复杂一些,数组被改写为指向数组第一行的指针。现在需要一个约定,其中一个用于提示每行的结束,另一个用于提示所有行的结束。提示单行结束可以使用一维数组所用的方法,提示所有行结束也可以这样。我们所接收的是一个指向数组第一个元素的指针。每次对指针进行自增操作时,指针就指向数组的下一行的起始地址,但怎么知道指针到达了数组的最后一行呢?我们可以增加额外的行,行内所有元素的值都是不可能在数组正常出现的,能够提示数组超出了范围。当对指针进行自增操作时,要对它进行检查,看看它是否到达了哪一行。另一种方法是,定义一个额外的参数,提示数组的行数。 

    /*
    ** print doubly_dimension array.
    */
    #include <stdio.h>
    #include <stdlib.h>

    #define ROW 4
    #define COLUMN 6
    void print_doubly_array( char ch[][COLUMN], int row, int column ); 

    int main( void ){
        char pea[4][6] = {"abc", "def", "hij", "klm" };
        print_doubly_array( pea, ROW, COLUMN );
    
        return EXIT_SUCCESS;
    }

    void print_doubly_array( char ch[][COLUMN], int row, int column ){
        int i, j;
    
        for( i = 0; i < row; ++i ){
            for( j = 0; j < column; ++j ){
                printf( "%c ", ch[i][j] );
            }
            printf( "\n" );
        }
    }
输出:


网站公告

今日签到

点亮在社区的每一天
去签到