In C99 a string is typically initialized by using the char*
data type since there is no primitive "string" data type. This effectively creates an array of chars by storing the address of the first char in the variable:
FILE* out = fopen("out.txt", "w");
char* s = argv[1];
fwrite(s, 12, 1, out);
fclose(out);
//successfully prints out 12 characters from argv[1] as a consecutive string.
How does the compiler know that char* s
is a string and not just the address of a singular char
? If I use int*
it will only allow one int
, not an array of them. Why the difference?
My main focus is understanding how pointers, referencing and de-referencing work, but the whole char*
keeps messing with my head.