Videos
Is printf a keyword in C?
How does the printf function work in C?
How can I print a string using printf in C?
While it looks different in your editor, it's actually the same.
When you write
printf("Hello, World!\n");
in your editor, your compiler in principle change it to
char* hidden_unnamed_string = "Hello, World!\n";
printf(hidden_unnamed_string);
The string "Hello, World!\n" is called a string literal. The compiler will (automatically) place it somewhere in memory and then call printf with that memory address.
Here is an example from godbolt.org

On the left side you have the C program as it looks in your editor. To the right you have the compiled program.
Notice how the string is located outside the code block and labeled with LC0. Then inside the code block LC0 is loaded into edi (i.e. the address of/pointer to the string is loaded into edi) just before calling the printing function.
Also notice that the compiler decided to use puts instead of printf. Further notice that the string is stored without the \n. The reason is that puts unlike printf automatically adds a \n.
For starters instead of this call of printf
printf("Hello, World!\n");
you could use a call of puts like
puts( "Hello, World!" );
The string literal "Hello, World!\n" internally is represented as a character array like
char string_literal[] =
{
'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\n', '\0'
};
Arrays used in expressions are implicitly converted (with rare exceptions) to pointers to their first elements.
So in this call
printf("Hello, World!\n");
the character array used as an argument of the function call is converted to pointer of the type char * to its first element 'H'. You can imagine that the following way
printf( &"Hello, World!\n"[0] );
Thus the function deals with a pointer of the type char *. You could do the same by introducing an intermediate variable
char *s = "Hello, World!\n";
printf( s );
or
char *s = "Hello, World!\n";
printf( "%s", s );
or
char *s = "Hello, World!";
printf( "%s\n", s );
or
char *s = "Hello, World!";
puts( s );