What will be the output of program
#include <stdio.h> int fun(char *a){ printf("%d ",sizeof(a)); return 1; } int main(){ char a[20]; printf("%d ",sizeof (fun(a))); return 0; }
Except with variable length arrays, sizeof does not evaluate its operand. So it will just yield the size of fun(a) type, i.e. sizeof(int) (without calling the function).
sizeof
fun(a)
sizeof(int)
C11 (n1570) §6.5.3.4 The sizeof and _Alignof operators 2 [...] If the type of the operand is a variable length array type, the operand is evaluated; otherwise, the operand is not evaluated and the result is an integer constant.
C11 (n1570) §6.5.3.4 The sizeof and _Alignof operators
_Alignof
2 [...] If the type of the operand is a variable length array type, the operand is evaluated; otherwise, the operand is not evaluated and the result is an integer constant.
2.1m questions
2.1m answers
60 comments
57.0k users