在这种情况下如何获取char数组大小?

Lea*_*ima 3 c arrays sizeof char

我对此表示怀疑:在这种情况下,如何获取char数组的大小:

#include<stdio.h>

void f(char * x)
{
printf("Size %d\n", sizeof(x)/sizeof(char));
}

main()
{
char x[5] = {'a', 'e', 'i', 'o', 'u'};
f(&x[0]);
}
Run Code Online (Sandbox Code Playgroud)

与我的期望相反,我得到的是8分而不是5分甚至6分。这是怎么了?

谢谢!

MOH*_*MED 5

sizeof(x)在你的代码将返回指针的大小char *x和该字符数组的不是大小x的指向上

在64位系统中,指针的大小为8;对于32位系统,指针的大小为4