<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: codeFacility</title>
    <description>The latest articles on DEV Community by codeFacility (@codefacility_54ecdc081e01).</description>
    <link>https://dev.to/codefacility_54ecdc081e01</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4012849%2F510a0503-d262-40ad-8559-4667e34f3785.png</url>
      <title>DEV Community: codeFacility</title>
      <link>https://dev.to/codefacility_54ecdc081e01</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codefacility_54ecdc081e01"/>
    <language>en</language>
    <item>
      <title>What Is Recursion in Programming? A Beginner's Guide</title>
      <dc:creator>codeFacility</dc:creator>
      <pubDate>Sun, 19 Jul 2026 19:01:26 +0000</pubDate>
      <link>https://dev.to/codefacility_54ecdc081e01/what-is-recursion-in-programming-a-beginners-guide-1mje</link>
      <guid>https://dev.to/codefacility_54ecdc081e01/what-is-recursion-in-programming-a-beginners-guide-1mje</guid>
      <description>&lt;p&gt;Recursion is one of those topics that sounds intimidating until it clicks, and then it never stops being useful. At its core, it's a simple idea: a function that calls itself to break a big problem down into smaller versions of the same problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Basic Idea
&lt;/h2&gt;

&lt;p&gt;A recursive function does two things. First, it checks whether it has hit a simple case it can solve directly, called the base case. If not, it calls itself again with a smaller or simpler version of the input, called the recursive case. Each call gets closer to the base case until it's finally reached, and then all the calls resolve back up the chain.&lt;/p&gt;

&lt;p&gt;Think of it like Russian nesting dolls. You keep opening smaller dolls until you hit the tiny solid one at the center. That solid doll is your base case. Without it, you'd be opening dolls forever.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Classic Example: Factorial
&lt;/h2&gt;

&lt;p&gt;The factorial of a number n (written n!) is the product of every whole number from 1 to n. Mathematically, n! = n × (n-1)!, which is already a recursive definition.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;factorial&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// base case&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;factorial&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// recursive case&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Calling &lt;code&gt;factorial(4)&lt;/code&gt; triggers &lt;code&gt;factorial(3)&lt;/code&gt;, which triggers &lt;code&gt;factorial(2)&lt;/code&gt;, which triggers &lt;code&gt;factorial(1)&lt;/code&gt;. That last call hits the base case and returns 1, and then each call multiplies its way back up: 1, then 2, then 6, then 24.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the Base Case Matters So Much
&lt;/h2&gt;

&lt;p&gt;If you forget a base case, or write one that's never actually reached, your function keeps calling itself indefinitely. Since each call takes up space on the call stack, this eventually crashes your program with a stack overflow. This is the single most common recursion bug, and it's worth double-checking every recursive function you write for a solid, reachable base case.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recursion vs. Iteration
&lt;/h2&gt;

&lt;p&gt;Almost anything you can write recursively, you can also write with a loop, and beginners often ask why bother with recursion at all. A few honest reasons:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some problems are naturally recursive.&lt;/strong&gt; Tree structures, nested folders, and anything with a "smaller version of itself" inside it tend to map cleanly onto recursive thinking. Traversing a file system or a binary tree is much cleaner recursively than with manual loops and stacks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It can make code easier to read.&lt;/strong&gt; A well-written recursive function often expresses the problem's logic more directly than an equivalent loop full of index tracking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's not always the efficient choice.&lt;/strong&gt; Recursive calls have overhead, and deep recursion can be slower and more memory-hungry than an equivalent loop. For simple counting or summing tasks, iteration is usually the better tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Second Example: Fibonacci
&lt;/h2&gt;

&lt;p&gt;The Fibonacci sequence is another common recursion example, where each number is the sum of the two before it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;fibonacci&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// base case&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;fibonacci&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;fibonacci&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// recursive case&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This version is a great teaching example, but it's also a good lesson in recursion's downsides: it recalculates the same values over and over, making it very slow for larger n. That's a common follow-up topic once you're comfortable with recursion, called memoization.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to Go From Here
&lt;/h2&gt;

&lt;p&gt;Recursion becomes intuitive with practice. Try rewriting simple loops as recursive functions, trace through the call stack by hand for something like factorial(5), and pay close attention to your base cases.&lt;/p&gt;

&lt;p&gt;If you want to practice recursion hands-on with guided lessons and a live code playground, &lt;a href="https://codefacility.com/advanced-py/advanced-python.html" rel="noopener noreferrer"&gt;CodeFacility's Python courses&lt;/a&gt; cover recursion, functions, and problem-solving step by step and completely free.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>python</category>
      <category>computerscience</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>What Is an API? A Beginner's Guide</title>
      <dc:creator>codeFacility</dc:creator>
      <pubDate>Sun, 19 Jul 2026 18:58:42 +0000</pubDate>
      <link>https://dev.to/codefacility_54ecdc081e01/what-is-an-api-a-beginners-guide-1p3o</link>
      <guid>https://dev.to/codefacility_54ecdc081e01/what-is-an-api-a-beginners-guide-1p3o</guid>
      <description>&lt;h2&gt;
  
  
  What Is an API? A Beginner's Guide
&lt;/h2&gt;

&lt;p&gt;You've probably heard the term API thrown around constantly in tech conversations, often as if everyone already knows what it means. The concept is actually pretty simple: an API is just a defined way for two pieces of software to talk to each other.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Restaurant Menu Analogy
&lt;/h2&gt;

&lt;p&gt;Think of an API like a menu at a restaurant. You don't walk into the kitchen and cook your own food, and you don't need to know how the kitchen works internally. You look at the menu, order something by name, and the kitchen hands you back a finished dish. The menu is the interface, a fixed set of things you're allowed to ask for, and how you ask for them.&lt;/p&gt;

&lt;p&gt;An API works the same way for software. It's a defined set of requests one program can make to another, without needing to know anything about how that other program works internally.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where APIs Show Up
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Web APIs.&lt;/strong&gt; When a weather app shows you today's forecast, it isn't calculating meteorology itself. It's sending a request to a weather service's API and displaying whatever data comes back.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Library and framework APIs.&lt;/strong&gt; When you call a function like &lt;code&gt;fetch()&lt;/code&gt; in JavaScript or &lt;code&gt;len()&lt;/code&gt; in Python, you're using an API too, just one that's part of the language or a library rather than a separate service over the internet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Operating system APIs.&lt;/strong&gt; Apps request things like file access or notifications from your operating system through defined APIs, without needing to know how the OS manages hardware underneath.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a REST API Request Actually Looks Like
&lt;/h2&gt;

&lt;p&gt;Most APIs you'll interact with as a web developer are REST APIs, which organize everything around resources (like a specific user, or a specific post) and use standard HTTP methods to act on them:&lt;/p&gt;

&lt;p&gt;GET /users/42       → retrieve user with ID 42&lt;br&gt;
POST /users         → create a new user&lt;br&gt;
PUT /users/42       → update user 42's full data&lt;br&gt;
DELETE /users/42    → delete user 42&lt;/p&gt;

&lt;p&gt;Here's what a simple request to fetch data from an API looks like in JavaScript:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.example.com/users/42&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This sends a GET request to the endpoint &lt;code&gt;/users/42&lt;/code&gt;, and the API responds with data, usually formatted as JSON, that your code can then use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Endpoints, Requests, and Responses
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Endpoint.&lt;/strong&gt; A specific URL an API exposes for a specific purpose, like &lt;code&gt;/users&lt;/code&gt; or &lt;code&gt;/products/5&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Request.&lt;/strong&gt; What your code sends to the API, including the HTTP method, the endpoint, and sometimes a body containing data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Response.&lt;/strong&gt; What the API sends back, typically including a status code (like 200 for success or 404 for not found) and a body containing the requested data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why APIs Matter So Much
&lt;/h2&gt;

&lt;p&gt;APIs are what let modern software be built out of pieces instead of from scratch every time. A payment app doesn't need to build its own banking infrastructure, it calls a payment API. A website doesn't need to build its own maps, it calls a mapping API. This is the foundation that makes the modern web modular and interconnected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to Go From Here
&lt;/h2&gt;

&lt;p&gt;APIs make the most sense once you actually call one. Try fetching data from a free public API and displaying it on a simple webpage, paying attention to the request you send and the JSON response you get back.&lt;/p&gt;

&lt;p&gt;If you want to practice working with APIs hands-on with guided lessons and a live code playground, &lt;a href="https://codefacility.com/advanced-js/advanced-js.html" rel="noopener noreferrer"&gt;CodeFacility's JavaScript courses&lt;/a&gt; cover fetch requests, JSON, and working with real APIs step by step and completely free.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>api</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What Is a Pointer in C? A Beginner's Guide</title>
      <dc:creator>codeFacility</dc:creator>
      <pubDate>Sun, 19 Jul 2026 18:43:22 +0000</pubDate>
      <link>https://dev.to/codefacility_54ecdc081e01/what-is-a-pointer-in-c-a-beginners-guide-3ddb</link>
      <guid>https://dev.to/codefacility_54ecdc081e01/what-is-a-pointer-in-c-a-beginners-guide-3ddb</guid>
      <description>&lt;h2&gt;
  
  
  What Is a Pointer in C? A Beginner's Guide
&lt;/h2&gt;

&lt;p&gt;If you're learning C and pointers are the moment things suddenly feel harder, you're not alone. Pointers trip up more beginners than almost any other concept in the language. But the core idea is simpler than it looks once you strip away the confusing syntax: a pointer is just a variable that stores an address instead of a value.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Variable Normally Stores a Value
&lt;/h2&gt;

&lt;p&gt;When you write &lt;code&gt;int age = 25;&lt;/code&gt;, C sets aside a small chunk of memory, gives it a label called &lt;code&gt;age&lt;/code&gt;, and stores the number 25 inside it. Every variable in your program lives somewhere in memory, and every location in memory has an address, similar to a house having a street address.&lt;/p&gt;

&lt;p&gt;Most of the time you don't think about that address at all. You just use the variable name and C handles the memory bookkeeping behind the scenes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a Pointer Actually Stores
&lt;/h2&gt;

&lt;p&gt;A pointer is a variable, but instead of holding a regular value like a number or character, it holds the memory address of another variable. Here's what that looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;agePointer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;&amp;amp;&lt;/code&gt; symbol means "give me the address of," and &lt;code&gt;*&lt;/code&gt; when declaring a variable means "this variable is a pointer." So &lt;code&gt;agePointer&lt;/code&gt; doesn't contain 25. It contains the address where 25 is stored.&lt;/p&gt;

&lt;p&gt;If you want to see the value at that address, you dereference the pointer using &lt;code&gt;*&lt;/code&gt; again: &lt;code&gt;printf("%d", *agePointer);&lt;/code&gt; would print 25, not the address.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Not Just Use the Variable Directly?
&lt;/h2&gt;

&lt;p&gt;This is the question that trips up most beginners, and it's a fair one. If you already have &lt;code&gt;age&lt;/code&gt;, why bother with a pointer to it?&lt;/p&gt;

&lt;p&gt;The real value of pointers shows up in a few common situations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passing large data to functions.&lt;/strong&gt; When you pass a variable to a function in C, it normally gets copied. For a single integer that's cheap, but for a large array or struct, copying is wasteful. Passing a pointer instead means the function works with the original data directly, without duplicating it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Modifying a variable inside a function.&lt;/strong&gt; Normally, changes made to a parameter inside a function don't affect the original variable outside it. Pointers let a function reach outside itself and modify the original data, which is essential for things like swap functions or updating values through function calls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dynamic memory allocation.&lt;/strong&gt; Functions like &lt;code&gt;malloc()&lt;/code&gt; return a pointer to newly allocated memory. Without pointers, there'd be no way to work with memory that's created while your program is running rather than fixed at compile time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Working with arrays and strings.&lt;/strong&gt; In C, array names actually behave like pointers to their first element. Understanding pointers makes array and string handling in C make a lot more sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Simple Example
&lt;/h2&gt;

&lt;p&gt;Here's a small program that shows a pointer changing a value through a function, something that wouldn't be possible without one:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;doubleValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;doubleValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"%d"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// prints 20&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without the pointer, &lt;code&gt;doubleValue&lt;/code&gt; would only be doubling a copy of &lt;code&gt;x&lt;/code&gt;, and the original &lt;code&gt;x&lt;/code&gt; in &lt;code&gt;main()&lt;/code&gt; would stay at 10. Because we passed the address instead, the function reaches into the original variable and changes it directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Pointer Mistakes to Watch For
&lt;/h2&gt;

&lt;p&gt;A few habits will save you a lot of debugging time as you get comfortable with pointers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Uninitialized pointers.&lt;/strong&gt; A pointer that hasn't been assigned an address points to a random, unpredictable location. Dereferencing it can crash your program or corrupt memory. Always initialize a pointer, even if it's just to &lt;code&gt;NULL&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dereferencing NULL.&lt;/strong&gt; Trying to read or write through a pointer that's set to &lt;code&gt;NULL&lt;/code&gt; will crash your program. It's good practice to check a pointer isn't &lt;code&gt;NULL&lt;/code&gt; before using it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forgetting to free allocated memory.&lt;/strong&gt; If you allocate memory with &lt;code&gt;malloc()&lt;/code&gt;, you're responsible for releasing it with &lt;code&gt;free()&lt;/code&gt; when you're done. Forgetting to do this causes memory leaks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to Go From Here
&lt;/h2&gt;

&lt;p&gt;Pointers become much clearer with practice than with explanation alone. The best way to build real intuition is to write small programs that pass values by pointer, experiment with arrays and pointers together, and get comfortable with dynamic memory allocation using &lt;code&gt;malloc&lt;/code&gt; and &lt;code&gt;free&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you want to practice pointers hands-on with guided lessons and a live code playground, &lt;a href="https://codefacility.com/advanced-c/adv-c-pointer-functions.html" rel="noopener noreferrer"&gt;CodeFacility's Advanced C course&lt;/a&gt; covers pointers, memory management, and more, step by step and completely free.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>c</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I made a new non-profit coding website that is completely for free. No BS!!</title>
      <dc:creator>codeFacility</dc:creator>
      <pubDate>Thu, 02 Jul 2026 23:34:58 +0000</pubDate>
      <link>https://dev.to/codefacility_54ecdc081e01/i-made-a-new-non-profit-coding-website-that-is-completely-for-free-no-bs-19b7</link>
      <guid>https://dev.to/codefacility_54ecdc081e01/i-made-a-new-non-profit-coding-website-that-is-completely-for-free-no-bs-19b7</guid>
      <description>&lt;p&gt;Hi everyone!&lt;/p&gt;

&lt;p&gt;Over the past few months, I've been working on a coding website that's completely free and has no annoying ads or paywalls. It's completely non-profit and I just wanted to make learning coding much more accessible. My goal was to create something that helps beginners actually understand programming instead of just copying AI-generated code.&lt;/p&gt;

&lt;p&gt;I'd genuinely love some feedback on the design, lessons, and overall experience. If you have a few minutes to check it out, I'd really appreciate it. Please let me know if there are any problems!&lt;/p&gt;

&lt;p&gt;Website: codefacility.com&lt;/p&gt;

&lt;p&gt;Thanks!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
