C语言理解篇:关于自定义函数如何引用main函数中的数组的理解

首先还是用一道题目来更好的了解如何做到将main函数中的数组通过什么方式使得其在自定义的一个函数中能够使用。

题目:在main函数中定义一个数组并为其赋值,然后自定义一个函数order(),使得main函数中的数组能够在order函数中引用并输出。

源代码:

#include <stdio.h>
#include <string.h>
void order(char* str,int k)
{
    int i, j;
    for (i = 0; i < k; i++)
    {
        printf("%c\t", *str);
        str++;
    }


}
int main()
{
    char arr[] = "abcdefg";
    int n;
    n = strlen(arr);
    order(arr,n);
}

首先先确定main函数中有什么内容,第一个是定义一个数组arr,并为其赋值abcdefg,然后定义一个计算字符串长度的变量n,通过strlen库函数计算arr数组中有多少个字符,并把值赋给n,然后调用order函数,并把arr和n传送到order函数中,值得注意的是这里传送给order函数的arr其实只是把arr的第一个字符的地址传送了过去,也就是把字符'a'的地址传到了order函数,然后order函数用指针变量str接收,指针变量用char*定义,然后再定义一个整型变量k接收n的大小。

下一步就是进入到了order函数内,定义一个整型变量i,通过for循环来一个一个输出数组arr内的内容,因为n为数组的大小,所以for循环中的i从0开始,到k的前一个数结尾,为数组的字符长度大小,然后使用解引用,通过地址间接引用数组的值,一开始str接收到的是字符‘a’的地址,所以通过解引用*str,那么其代表的值就是字符'a',通过printf语句将*str(即字符‘a’)输出,然后再让地址str加一,就到了数组的下一位,如此循环输出,到最后i=k时,不满足循环条件跳出循环,结束。

以上就是如何将main函数中的数组的全部内容引用到自定义函数中使用,重点还是main函数向自定义函数中传送的只是数组的首字符的地址,在自定义函数中需要用指针变量char*去接收这个地址,然后通过解引用去使用这个地址对应的字符,最后通过使地址加一,即str++的操作,就可以达到完成对当前地址对应的数组字符的引用然后再往下一位数组的引用的效果。


版权声明:本文为m0_58229878原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。