<div dir="ltr"><div>There's lots of great books on C. My favourite is Al Kelley & Ira Pohl's "A Book on C" but there are many others, and it would be terrible to not mention "The C Programming Language", commonly referred to as simply "K&R", for reasons that will be immediately apparent if you read about the language on Wikipedia.<br></div><div><br></div><div>Regarding pointers — they are variables like any other and, most importantly, don't necessarily have to point to other variables that you've declared, thought that does seem to be a common case. They help you achieve several goals:</div><div><br></div><div>1. they let you pass data to functions "by reference", ie. in such a way that the function can modify the value</div><div>2. they let you create data structures of a size that varies at runtime,such as linked lists and trees</div><div>3. they let you dynamically allocate chunks of memory (required for #2 above, and many other tasks)<br></div><div>4. they let you directly access memory at "known" addresses, possibly representing hardware such as a video framebuffer</div><div>5. they let you store and use dynamic references to code (functions) as well as data<br></div><br><div><div>I don't remember who it was but someone referred to C as being a portable assembly language, and I think that's a rather apt description. Once you have a good understanding of the machine your code will run on, it should be fairly straightforward to read some C code and know with a reasonable degree of accuracy what machine instructions will be generated when you compile it.</div><div><br></div><div>C today is a very different beast to the C that was used to implement the Unix operating system in the 1970s. It's important to be aware of which C standard your compiler is applying. If 'gcc' you can choose a standard to use. The last one I used was C99.<br></div><div><br></div><div>John<br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 4 Dec 2020 at 18:19, Shawn Rakestraw <<a href="mailto:shawn@epicpoolsga.com">shawn@epicpoolsga.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">Thanks Jay, I actually installed a VirtualBox with Ubuntu tonight and started learning C. It is a lot like C++. Hopefully I can pick up on the basics of it pretty quick. At the moment I have been a little confused about the * and ** next to variable names. Also the & variable names. I found some resources about it and realize they indicate pointers or something. I'm just not following the reason to have a pointer instead of the variable. I'm sure it will become clear as I continue to learn. </div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Dec 3, 2020, 3:11 PM Jay Schwichtenberg <<a href="mailto:jschwich53@comcast.net" target="_blank">jschwich53@comcast.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div>
    <p>I was an embedded/bare metal HW/SW engineer and will say working
      with embedded ARM uCs C.</p>
    <p>C++ usually complicates things and is overkill for run of the
      mill embedded stuff. Don't know if it is still true but at one
      time the C++ libraries had a lot of bloat and took up a lot of
      storage. I've also found C++ harder to debug when people start
      overloading and abstracting things.<br>
    </p>
    <p>If you do need to run object based code you can in C. Take all
      the data for an object and put it into a structure and then pass a
      pointer to the structure around through the code. This is more or
      less the equivalent of a 'this structure' that objects have in
      C++. The data is isolated to a single object and just use a new
      structure with different data for another object. Also follow C++
      and make you own constructors and destructors to setup and
      shutdown things.</p>
    <p>Jay S.<br>
    </p>
    <div>On 12/2/2020 6:45 PM, Shawn Rakestraw
      wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">
        <div>Please don't go into extreme detail (unless you really want
          to). I ask too many simple questions and I feel bad that
          everyone spends great amounts of time with it.</div>
        <div><br>
        </div>
        <div>I am thinking about programming ARM chips like the STM32
          for something like Braids. I know that I will not be making my
          own Braids module anytime soon, but I would like to start
          thinking about the language I need to learn. I know the most
          about C++. I also realize that my question may be better asked
          as what libraries should I load / study up on.</div>
        <div><br>
        </div>
        <div>Thanks guys/gals<br>
        </div>
      </div>
      <br>
      <fieldset></fieldset>
      <pre>_______________________________________________
Synth-diy mailing list
<a href="mailto:Synth-diy@synth-diy.org" rel="noreferrer" target="_blank">Synth-diy@synth-diy.org</a>
<a href="http://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer" target="_blank">http://synth-diy.org/mailman/listinfo/synth-diy</a>
Selling or trading? Use <a href="mailto:marketplace@synth-diy.org" rel="noreferrer" target="_blank">marketplace@synth-diy.org</a>
</pre>
    </blockquote>
  </div>

_______________________________________________<br>
Synth-diy mailing list<br>
<a href="mailto:Synth-diy@synth-diy.org" rel="noreferrer" target="_blank">Synth-diy@synth-diy.org</a><br>
<a href="http://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer noreferrer" target="_blank">http://synth-diy.org/mailman/listinfo/synth-diy</a><br>
Selling or trading? Use <a href="mailto:marketplace@synth-diy.org" rel="noreferrer" target="_blank">marketplace@synth-diy.org</a><br>
</blockquote></div>
_______________________________________________<br>
Synth-diy mailing list<br>
<a href="mailto:Synth-diy@synth-diy.org" target="_blank">Synth-diy@synth-diy.org</a><br>
<a href="http://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer" target="_blank">http://synth-diy.org/mailman/listinfo/synth-diy</a><br>
Selling or trading? Use <a href="mailto:marketplace@synth-diy.org" target="_blank">marketplace@synth-diy.org</a><br>
</blockquote></div>