TRT
Sign in
easyFoundationsconcept

C strings versus char pointers: what is the difference?

Explain how C strings are null-terminated char arrays and how char pointers can point to string literals or arrays.

TRT practice prompt — not a verified question from a named employer.

The Runtime Theory Team2 min read
Learn it firstText in C: Working with StringsLearn how C stores text as null-terminated character arrays, read and print strings, and avoid buffer overflows when copying text.

A strong answer

A strong candidate frames C strings versus char pointers: what is the difference? around the exact memory layout, compiler semantics, and hardware execution model covered in Text in C: Working with Strings. Explain how C strings are null-terminated char arrays and how char pointers can point to string literals or arrays.

Numbers are only half of what programs handle; the other half is text—names, file paths, command-line flags, HTTP headers, and log messages. You already know that a single char variable holds one character byte (such as 'A', ASCII value 65). And from the previous lesson, you know that an array of char (char name[50];) can hold a sequence of characters in contiguous memory.

But there is a catch: a person's name might be "Al" (2 letters), "Alice" (5 letters), or "Bartholomew" (11 letters), all stored inside the same 50-byte char name[50] array. When you pass name to printf("%s ", name), how does printf know where the letters of the name stop and the unused slots of the 50-byte array begin?

In a production interview, always connect the specification rule to its concrete runtime consequence: state what lives on the stack versus the heap or static storage segment, how the compiler or operating system validates alignments, lifetimes, and error codes, and what happens under adversarial or boundary inputs (such as zero-length buffers, integer overflow, concurrent mutation, or partial I/O). Backing your explanation with a small trace of register/memory state transitions immediately separates senior systems engineers from candidates who only memorized syntax.

What the interviewer is listening for

  • Mastery of core invariant: Declare and initialize a character array as a string.
  • Mastery of core invariant: Print and read strings using %s with printf and scanf.
  • Mastery of core invariant: Explain the null terminator \0 and why strings need it.
  • Hardware and ABI awareness: Explaining how sizes, alignments, calling conventions, or kernel boundaries behave on real 64-bit targets rather than relying on implementation-defined assumptions.
  • Defensive engineering: Naming the exact compiler flags (-Wall -Wextra -Werror), static analyzers, or runtime sanitizers (-fsanitize=address,undefined,thread) that verify correctness in CI.

Common mistakes

  • Explaining only surface syntax without tracing the underlying memory addresses, ownership lifetime, or kernel/user-space state transitions.
  • Assuming undefined behavior (such as signed overflow, uninitialized reads, strict-aliasing violations, or dangling pointers) will "just work" because it passed an unoptimized -O0 debug build.
  • Ignoring return codes, partial reads/writes, alignment padding, or cleanup paths when an allocation or syscall fails midway through a function.

This answer walks

Practice follow-ups

  1. 01Can you modify a string literal through a char pointer?
  2. 02What is the null terminator and why is it needed?

Not started

Sign in to save your learning progress.

Sign in to save