In Lesson 7 of **Learn C With Me**, we finally wrap up our journey through **arrays in C** and move on to our next major topic: **strings**. Using **Beej's Guide to C** as our study material, we finish the remaining section on passing multidimensional arrays to functions and then discover something very C-like: **strings aren't really a separate built-in type at all**. Instead, they're closely connected to arrays, pointers, and memory. We cover: * **Passing multidimensional arrays to functions** * Why C needs to know all array dimensions except the first * How multidimensional array indexes translate into **memory offsets** * A final look at the relationship between **arrays and pointers** * **String literals** in C * The difference between `"double quotes"` and `'single quotes'` * Escaping characters inside strings * **String variables** * Representing strings using `char *` * Representing strings as **arrays of `char`** * Accessing individual characters using array notation * The difference between `sizeof` on an array and `sizeof` on a pointer * Using `strlen()` and `string.h` * Why `strlen()` returns `size_t` * **String initializers** * The difference between a pointer to a string literal and a mutable character array * Why attempting to modify a **string literal** results in undefined behavior * **Null-terminated strings** * The special `'\0'` character * How C knows where a string ends * Writing our own simple version of `strlen()` * **Copying strings** * Why assigning one string pointer to another doesn't actually copy the string * How two pointers can refer to the **same memory** One of the biggest takeaways from this lesson is that **C doesn't keep track of a string's length for us**. A C string is essentially a sequence of characters in memory followed by a special `'\0'` terminator. We even look at how a simple `strlen()`-style function can find the length by walking through those characters until it reaches the terminator. We also run into an important distinction between `char *s = "Hello";` and `char s[] = "Hello";`. They might initially look almost interchangeable, but their behavior becomes very different when we try to modify the data. This gives us another practical look at the relationship between **pointers, arrays, strings, and memory**. Finally, we experiment with **copying strings** and see why simply assigning one pointer to another doesn't create an independent copy. Both pointers can end up referring to the same underlying data, so modifying it through one pointer affects what we see through the other. As usual, we experiment, make mistakes, follow a few programming-related side quests, get help from the live chat, and try to understand **why C behaves the way it does** rather than simply memorizing syntax. This is an **interactive, follow-along live course**. I am learning C alongside you, so expect questions, mistakes, experiments and plenty of discussion. No passive watching here — participate in the chat and work through the examples with us. 📅 **We go live every Saturday at 19:00 CEST** — interactive, follow-along C programming sessions. 📖 **Study material:** [Beej's Guide to C](https://beej.us/guide/bgc/) 📚 **Course materials:** [Linux Renaissance C Programming Course](https://linuxrenaissance.com/courses) 💬 **Homework & discussion:** [Linux Renaissance Forum](https://forum.linuxrenaissance.com/c/programming/13) 📺 **All C Programming lessons:** [C Programming playlist](https://www.youtube.com/playlist?list=PLE6A_ADcHGpc) 🔴 **This stream is proudly sponsored by OPNsense** — the open source firewall and routing platform trusted by professionals worldwide. [OPNsense](https://opnsense.org) ### Support Linux Renaissance 🛒 Shop: [Linux Renaissance Shop](https://shop.linuxrenaissance.com) ☕ Ko-fi: [Ko-fi](https://ko-fi.com/darth) 🎖️ Patreon: [Patreon](https://www.patreon.com/c/linuxrenaissance/membership) ▶️ YouTube membership: [YouTube Membership](https://youtube.com/@LinuxRenaissance/join) ### Find me elsewhere 🌐 Blog: [Linux Renaissance](https://linuxrenaissance.com) 🎥 PeerTube: [Linux Renaissance on PeerTube](https://watch.linuxrenaissance.com) 📺 Odysee: [Linux Renaissance on Odysee](https://odysee.com/@LinuxRenaissance:1) 🎮 Twitch: [Linux Renaissance on Twitch](https://twitch.tv/LinuxRenaissance) 💬 Matrix: [Linux Renaissance Matrix space](https://matrix.to/#/%23space%3Afosshq.org)