Ugiwise Get the app

C you can read.

You get a short C program and predict what it does. Then the app walks through it line by line: which objects change, what gets printed, and why.

Download on the App Store

iOS only for now

A C program stepped through one stop at a time. Line 7, first = 10;, is highlighted. The objects panel shows first changing from 9 to 10 while second keeps 9, the output will be 10 9, and a note says second is a different box, so it keeps its 9.

Try a card

Two names, one object.

A card from Stage 12, Pointer Fundamentals. Tap Step and watch what each line does.

Follow the highlighted line. The boxes are the program’s objects.

Output

Objects

Read the card: Two names, one object

Here is the thing pointers are actually for. Once p holds a's address, a and *p are two names for the same object - not two objects that agree, one object with two ways in. Write through either and read through either; the value is the same because the storage is the same. Every copy this course has made was a separate object. The one exception, Unit 9's array parameter reaching the caller's elements, used an address you never saw; now you hold it and name it.

One box, two ways in. The pointer never moved.

Your turn

The card and the question are the ones in the app, word for word.

Inside the app

What the C course looks like.

Screens from the C course, on an iPhone.

  1. A predict-the-output question for a C program that prints an int and a double with %d %.2f. The pick 4 0 is marked wrong, 4 0.75 is the answer, and the note says length is a double, which keeps the fraction.
    Wrong answers explain why
  2. A swap function that takes two ints, stepped through. At line 8, y = t;, the objects x and y have been exchanged while main’s a and b still hold 1 and 2, and a note says nothing in swap names a or b.
    Why swap(a, b) can’t work
  3. A malloc and free program stepped through. At line 14, free(block);, the pointer block is marked now invalid with an indeterminate value, the allocated int is marked ended, and a note explains what free does.
    What free actually does
  4. The C Fundamentals course map: 0 of 39 stages cleared, 278 lessons, Bolt standing on Stage 1, C Programs and the Toolchain, marked You are here, with a Start card for lesson 1 of 6, Your first C program.
    See where you are

The course

39 stages, in this order.

From your first program to pointers, memory and files, then how C lays out your data underneath.

  1. C Programs and the Toolchain
  2. Variables, Declarations and Values
  3. Integer, Floating and Character Types
  4. Basic Output and the Format Contract
  5. Operators and Expressions
  6. Making Decisions
  7. Loops
  8. Functions, Scope and Lifetime
  9. Arrays
  10. C Strings
  11. Structures
  12. Pointer Fundamentals
  13. Dynamic Storage and Ownership
  14. Beginner Project
  15. Checked Input and Text Conversion
  16. Numeric C and Conversions
  17. Expression and Control Extensions
  18. Arrays II
  19. Pointers II
  20. Strings and Raw Memory
  21. Dynamic Storage II
  22. Structures II and Recursive Data
  23. Typedefs, Enums and Qualified Types
  24. Function Pointers and Callbacks
  25. Headers, Preprocessor and Multi-file Programs
  26. File I/O and Command-line Programs
  27. Unsigned Bit Operations
  28. Intermediate Project
  29. Object Representation and Portability
  30. Alignment, Padding and Layout
  31. Unions and Compound Literals
  32. Advanced Declarators and Qualification
  33. Aliasing and restrict
  34. Advanced Preprocessor
  35. C inline, Linkage and Program Boundaries
  36. Representation-sensitive Bits
  37. Robust Resource Management
  38. Portable Binary Formats
  39. Advanced Project

Get Ugiwise on your iPhone

  • iOS only for now.
  • Stages 1 to 3 are free, and no account is required.
  • Stages 4 to 39 are a paid upgrade.
  • The course is written to C17.
  • The app doesn’t compile or run code on your phone. You read programs, predict what they do, find bugs and fill in code.
Download on the App Store