sizeof(函数(参数))返回什么?

Bha*_*tan 7 c sizeof

什么是程序的输出

#include <stdio.h>

int fun(char *a){
    printf("%d\n",sizeof(a));
    return 1;
}

int main(){
    char a[20];
    printf("%d\n",sizeof (fun(a)));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

md5*_*md5 18

除了可变长度数组,sizeof不评估其操作数.所以它只会产生fun(a)类型的大小, sizeof(int)(不调用函数).

C11(n1570)§6.5.3.4 sizeof_Alignof运营商

2 [...]如果操作数的类型是可变长度数组类型,则评估操作数; 否则,不评估操作数,结果是整数常量.