1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <stdio.h>
#include <stdlib.h>
// STRINGS
int main(int argc, char* argv[]) {
// A "string" is just an array of characters.
// Customarily, C language libraries assume that a string is terminated
// in memory with a null terminator ('\0'). The null terminator is
// not printed to the terminal or to files.
// String on the stack, in two ways.
char s_stack_1[] = "abc"; // Type is char[4] (array of 4 chars).
char s_stack_2[] = { 'a', 'b', 'c', '\0' }; // EXACTLY THE SAME AS ↑
// When you use "▒" in C, the compiler automatically adds the
// null terminator, which is '\0' (value=0).
// String on the data segment
char* s_data_segment = "abc"; // Type is char*. Initialized with "▒".
// WHY USE ONE OR THE OTHER?
// ∙ An array (including a string) on the stack can be written to.
// ∙ A string literal assigned to a char* is in a read-only portion
// of the data segment is in
return EXIT_SUCCESS;
}
/* vim: set tabstop=4 shiftwidth=4 fileencoding=utf-8 noexpandtab: */
|
© Copyright 2020 Alexander J. Quinn This content is protected and may not be shared, uploaded, or distributed.