When I am trying to pass an array and evaluate the size of that array using sizeof, it is giving wrong answer whereas it is producing correct result when done in main function:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void fun(char c[])
{
printf("in fun, string = %s ,size of c = %d , sizeof c[0]= %d, strlen = %d\n",c,sizeof(c),sizeof(c[0]),strlen(c));
}
int main()
{
char c[]="(a(bc)d(e)f)";
printf("in main, via sizeof -> %d, via strlen -> %d\n",sizeof(c)/sizeof(c[0]),strlen(c));
fun(c);
return 0;
}
The output is:
in main, via sizeof -> 13, via strlen -> 12
in fun, string = (a(bc)d(e)f) ,size of c = 8 , sizeof c[0]= 1, strlen = 12
Compiler is :
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)