<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Pointers on AI VOID</title><link>https://ai-blog.noorshomelab.dev/tags/pointers/</link><description>Recent content in Pointers on AI VOID</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 16 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ai-blog.noorshomelab.dev/tags/pointers/index.xml" rel="self" type="application/rss+xml"/><item><title>Chapter 5: Pointers: The Heart of C</title><link>https://ai-blog.noorshomelab.dev/c-programming-guide/pointers-the-heart-of-c/</link><pubDate>Mon, 03 Nov 2025 01:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/c-programming-guide/pointers-the-heart-of-c/</guid><description>&lt;h1 id="chapter-5-pointers-the-heart-of-c"&gt;Chapter 5: Pointers: The Heart of C&lt;/h1&gt;
&lt;p&gt;Welcome to the most distinctive and powerful feature of C: &lt;strong&gt;pointers&lt;/strong&gt;. While intimidating for beginners, mastering pointers is fundamental to truly understanding C and low-level programming. Pointers allow you to directly interact with memory addresses, enabling advanced memory management, efficient data manipulation, and direct hardware interaction.&lt;/p&gt;
&lt;p&gt;In this chapter, we will demystify pointers by exploring:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What memory addresses are and how variables are stored.&lt;/li&gt;
&lt;li&gt;How to declare, initialize, and use pointers.&lt;/li&gt;
&lt;li&gt;The concepts of dereferencing and indirection.&lt;/li&gt;
&lt;li&gt;Pointer arithmetic and its applications.&lt;/li&gt;
&lt;li&gt;How pointers enable &amp;ldquo;pass-by-reference&amp;rdquo; in functions.&lt;/li&gt;
&lt;li&gt;Special types of pointers like &lt;code&gt;NULL&lt;/code&gt; and &lt;code&gt;void&lt;/code&gt; pointers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let&amp;rsquo;s confront the &amp;ldquo;dreaded&amp;rdquo; pointer head-on!&lt;/p&gt;</description></item><item><title>Chapter 6: Arrays and Strings: Handling Collections of Data</title><link>https://ai-blog.noorshomelab.dev/c-programming-guide/arrays-and-strings-handling-collections-of-data/</link><pubDate>Mon, 03 Nov 2025 01:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/c-programming-guide/arrays-and-strings-handling-collections-of-data/</guid><description>&lt;h1 id="chapter-6-arrays-and-strings-handling-collections-of-data"&gt;Chapter 6: Arrays and Strings: Handling Collections of Data&lt;/h1&gt;
&lt;p&gt;So far, we&amp;rsquo;ve dealt with individual variables. But what if you need to store a collection of related items, like a list of student scores or a sequence of characters that form a name? This is where &lt;strong&gt;arrays&lt;/strong&gt; and &lt;strong&gt;strings&lt;/strong&gt; come in.&lt;/p&gt;
&lt;p&gt;In C, arrays are fundamental for storing multiple values of the same data type in contiguous memory locations. Strings are a special case of character arrays. This chapter will cover:&lt;/p&gt;</description></item><item><title>Chapter 7: Memory Management: `malloc`, `calloc`, `realloc`, `free`</title><link>https://ai-blog.noorshomelab.dev/c-programming-guide/memory-management/</link><pubDate>Mon, 03 Nov 2025 01:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/c-programming-guide/memory-management/</guid><description>&lt;h1 id="chapter-7-memory-management-malloc-calloc-realloc-free"&gt;Chapter 7: Memory Management: &lt;code&gt;malloc&lt;/code&gt;, &lt;code&gt;calloc&lt;/code&gt;, &lt;code&gt;realloc&lt;/code&gt;, &lt;code&gt;free&lt;/code&gt;&lt;/h1&gt;
&lt;p&gt;Up until now, all the variables we&amp;rsquo;ve used have been allocated automatically by the compiler in either &lt;strong&gt;static memory&lt;/strong&gt; (for global variables) or the &lt;strong&gt;stack&lt;/strong&gt; (for local variables and function parameters). This is sufficient for many tasks, but it has limitations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fixed Size:&lt;/strong&gt; Stack-allocated arrays (like &lt;code&gt;int arr[10];&lt;/code&gt;) must have their size known at compile time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limited Lifetime:&lt;/strong&gt; Stack variables are automatically destroyed when their function exits.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Dynamic Memory Allocation&lt;/strong&gt; allows your program to request memory from the operating system during runtime (when the program is executing) from an area called the &lt;strong&gt;heap&lt;/strong&gt;. This memory persists until explicitly deallocated or the program ends. This is crucial for:&lt;/p&gt;</description></item><item><title>Chapter 8: Linked Lists: Dynamic Connections</title><link>https://ai-blog.noorshomelab.dev/dsa-typescript-mastery-2026/linked-lists-dynamic-connections/</link><pubDate>Mon, 16 Feb 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/dsa-typescript-mastery-2026/linked-lists-dynamic-connections/</guid><description>&lt;h2 id="chapter-8-linked-lists-dynamic-connections"&gt;Chapter 8: Linked Lists: Dynamic Connections&lt;/h2&gt;
&lt;p&gt;Welcome back, future software architect! In our previous chapters, we’ve laid a solid foundation by understanding the core principles of data structures and algorithms, diving deep into complexity analysis, and even exploring the versatility of arrays and strings. Arrays are fantastic for their fast, direct access to elements. But what if you need a data structure that&amp;rsquo;s more flexible, one that doesn&amp;rsquo;t require contiguous memory and excels at insertions and deletions without shifting every other element?&lt;/p&gt;</description></item><item><title>Chapter 12: Intermediate Topics: Advanced Pointers and Function Pointers</title><link>https://ai-blog.noorshomelab.dev/c-programming-guide/advanced-pointers-and-function-pointers/</link><pubDate>Mon, 03 Nov 2025 01:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/c-programming-guide/advanced-pointers-and-function-pointers/</guid><description>&lt;h1 id="chapter-12-intermediate-topics-advanced-pointers-and-function-pointers"&gt;Chapter 12: Intermediate Topics: Advanced Pointers and Function Pointers&lt;/h1&gt;
&lt;p&gt;In Chapter 5, we introduced the fundamental concepts of pointers. Now, we&amp;rsquo;ll delve into more advanced aspects of pointers that are essential for handling complex data structures, dynamic memory management, and flexible program design.&lt;/p&gt;
&lt;p&gt;This chapter will cover:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pointers to Pointers:&lt;/strong&gt; When you need to modify a pointer itself from a function.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arrays of Pointers:&lt;/strong&gt; Storing multiple pointers in an array.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pointers to Arrays:&lt;/strong&gt; A pointer that points to an entire array.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pointers to Structures:&lt;/strong&gt; Advanced usage with dynamically allocated structs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Function Pointers:&lt;/strong&gt; Pointers that point to functions, enabling callback mechanisms and dynamic function calls.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Command-Line Arguments:&lt;/strong&gt; Understanding &lt;code&gt;argc&lt;/code&gt; and &lt;code&gt;argv&lt;/code&gt; as an array of character pointers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="121-pointers-to-pointers-double-pointers-revisited"&gt;12.1 Pointers to Pointers (Double Pointers) Revisited&lt;/h2&gt;
&lt;p&gt;We briefly touched upon this in Chapter 5. A pointer to a pointer stores the address of another pointer. This is particularly useful when a function needs to modify a pointer variable that was passed to it from the calling function.&lt;/p&gt;</description></item><item><title>Learn C Programming Guide</title><link>https://ai-blog.noorshomelab.dev/guides/learn-c-programming-guide/</link><pubDate>Mon, 03 Nov 2025 01:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/guides/learn-c-programming-guide/</guid><description>&lt;h1 id="learn-c-programming-a-comprehensive-guide"&gt;Learn C Programming: A Comprehensive Guide&lt;/h1&gt;
&lt;p&gt;Welcome to the &lt;strong&gt;Learn C Programming Guide&lt;/strong&gt;! This document is designed for absolute beginners with a background in general software development (e.g., web development) who want to dive into the world of low-level programming using the C language. C is a powerful and efficient language that forms the backbone of countless systems, from operating systems and embedded devices to high-performance computing.&lt;/p&gt;
&lt;p&gt;In this guide, you will embark on a journey from understanding the very basics of C to tackling advanced concepts and building practical projects. We will cover fundamental building blocks like memory and pointers, explore the new features introduced in the C23 standard, and provide you with hands-on exercises to solidify your learning. By the end of this guide, you will have a strong foundation in C programming and a deeper appreciation for how software interacts with hardware.&lt;/p&gt;</description></item></channel></rss>