1

我有这个代码:

int indexOf(const char *array[], char *e)
{
     printf("inside: %d\n",(int)sizeof(array));
/* ... */
}

int main(int argc, char *argv[])
{

    const char *a[] = {";", ",", ":", "==", ":="};
    char *b = "==";
    printf("outside: %d\n",(int)sizeof(a));
    int d = indexOf(a,b);
/* ... */
}

这是输出:

outside: 40
inside: 8

为什么输出不一样?请问有什么帮助吗?

4

1 回答 1

9

数组在传递给函数时衰减为指向其第一个元素的指针。from 函数会在您的实现中产生指针的sizeof大小。你可以声明它:

int indexOf(const char **array, char *e)

您可能希望将长度作为单独的参数传递。

编辑

我正在尝试避免将大小作为参数传递。

在这种情况下,您可以用NULL

const char *a[] = {";", ",", ":", "==", ":=", NULL};

这样在函数中你就会知道它在哪里结束。

于 2011-10-26T17:37:05.063 回答