繁体   English   中英

神秘的C函数调用

[英]Mysterious C function calling

我有以下代码:

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

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

传递给函数时,数组会衰减为指向其第一个元素的指针。 函数的sizeof产生实现中指针的大小。 您可能已经声明了:

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

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

编辑

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

在这种情况下,您可以将数组的结尾标记为NULL

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

这样,您将在函数中知道结束的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM