I'm late on this but the sizeof() function uses ch as a pointer and the type of ch (int, char*, struct... etc) as a guide to interpreting what value to return. So isn't ch the same as &ch[0] ??? Just sayin'