为什么传递给函数时C字符串长度会发生变化?

Mar*_*van 0 c sizeof

可能重复:
C - > sizeof字符串始终为8

如果我这样做,sizeof("HELLO");我会得到6,这是预期的,但是如果我有:

void printLength(char *s) {
    sizeof(s);
}
Run Code Online (Sandbox Code Playgroud)

传递"Hello"到此函数sizeof返回8.

为什么是这样?

Mah*_*esh 6

你得到的是大小char *.要获得它的实际长度,请使用strlen.