[英]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.