将字符指针数组传递给C函数

时间:2015-03-13 18:43:59

标签: c

我想将一个字符指针数组传递给C函数并访问数组中的每个元素。我已经全局声明了一个像这样的指针数组。

char *TblList[] = { "TableA", "TableB", "TableC" };

作为一个全局变量,我只需将其作为TblList[0]TblList[1]TblList[2]进行访问。

我想将TblList[]传递给一个函数,该函数位于不同的对象中,但绑定到程序中(如果有意义的话)。

目前我的声明函数是这样的。

short Func(char *Tbl[])
{
    short total_tbl = 0;
    total_tbl = OCCURS(Tbl);
    ...
}

OCCURS返回1的值。我需要有3个,因为TblList[]中有3个元素。如何传递TblList以及Func()的正确声明是什么?另外,在Tbl[]中访问Func()的正确语法是什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

没有附加信息,无法知道数组元素的数量。这可能是一个单独的变量,但是在这个例子中,我在数组的末尾使用了NULL sentinel - 与使用nul sentinel标记{{{}结尾的方式非常相似1}} array(一个字符串)。

我放弃了char功能或宏,因为我不明白你的评论。我还将返回值从OCCUR()更改为short,这是机器的自然尺寸。

int

节目输出:

#include<stdio.h>
#include<string.h>

char *TblList[] = { "TableA", "TableB", "TableC", NULL };

int Func(char *Tbl[])
{
    int i = 0;
    while (Tbl[i] != NULL)
        i++;
    return i;
}    

int main(void)
{
    printf ("Number of array elements: %d\n", Func(TblList));
    return 0;
}