I'm struggling to understand typecast and type cast with pointers ```c++
int main() {
int f = 5;
char a = (char)f;
// why use (Char) if it implicitly casts anyway
std::cout << f;
// i dont understand what it means when you are using pointers to cast example below not declared above
int *pointer = (char *)(value + another value)
// another example i see
int *pointer = (int *)(DWORD *)(somevalue + another)
// another
int *pointer = (char *)(somevalue)
return 0;
}``` i have spend weeks and weeks struggling really hard to understand pointer casts please for the love of god