{"id":1573,"date":"2024-10-28T18:07:13","date_gmt":"2024-10-28T18:07:13","guid":{"rendered":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/?page_id=1573"},"modified":"2025-01-20T20:06:48","modified_gmt":"2025-01-20T20:06:48","slug":"assignment-1a-pointers-arrays","status":"publish","type":"page","link":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/assignments\/assignment-1\/assignment-1a-pointers-arrays\/","title":{"rendered":"Assignment 1a: Pointers &amp; Arrays"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Overview\"><\/span>Overview<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>In C and C++, there is a very close association between&nbsp;<em>arrays<\/em>&nbsp;and&nbsp;<em>pointers<\/em>.&nbsp; This part of the assignment is intended to give you a little practice with combining the two, and with the use of various related operators:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code><strong>&amp;<\/strong><\/code>, the address-of operator<\/li>\n\n\n\n<li><code><strong>*<\/strong><\/code>, the pointer dereference operator<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Step_1\"><\/span>Step 1:<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>First, before you start any of the following, point your browser at:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><a href=\"https:\/\/pdos.csail.mit.edu\/6.828\/2014\/readings\/pointers.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">A Tutorial on Pointers and Arrays in C<\/a><\/p>\n\n\n\n<p>This is <em>A Tutorial on Arrays and Pointers in C<\/em>, by Ted Jensen.&nbsp; Read it thoroughly.&nbsp; I suggest you take it in small pieces, and slowly, trying out the various examples he uses as you go.&nbsp;<\/p>\n<\/blockquote>\n\n\n\n<div style=\"height:11px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Step_2\"><\/span>Step 2:<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Here is a program (it should be valid in either C or C++) that implements a function,&nbsp;<code><strong>reverse<\/strong><\/code>, which, given a string, reverses that string in place (that is, it does not copy the string before it reverses it):<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#000000;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/\n\/\/  main.cpp\n\/\/  Assignment 1a\n\/\/\n\/\/  Created by Bryan Higgs on 10\/28\/24.\n\/\/\n\n#include &lt;stdio.h&gt;\n#include &lt;string.h&gt;\n\nstatic void reverse(char array[])\n{\n  size_t i, j;\n  for (i = 0, j = strlen(array); i &lt; j; )\n  {\n    char temp = array[i];\n    array[i++] = array[--j];\n    array[j] = temp;\n  }\n}\n\nint main(int argc, const char * argv[])\n{\n  char zeroChars[]  = &quot;&quot;;\n  char oneChar[]    = &quot;X&quot;;\n  char theBeatles[] = &quot;John Paul George &amp; Ringo&quot;;\n  char beatleSong[] = &quot;Strawberry Fields Forever&quot;;\n\n  reverse(zeroChars);\n  printf(&quot;Reversed: '%s'\\n&quot;, zeroChars);\n\n  reverse(oneChar);\n  printf(&quot;Reversed: '%s'\\n&quot;, oneChar);\n\n  reverse(theBeatles);\n  printf(&quot;Reversed: '%s'\\n&quot;, theBeatles);\n\n  reverse(beatleSong);\n  printf(&quot;Reversed: '%s'\\n&quot;, beatleSong);\n\n  return 0;\n}\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  main.cpp<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Assignment 1a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Created by Bryan Higgs on 10\/28\/24.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&lt;stdio.h&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&lt;string.h&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">void<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">reverse<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">array<\/span><span style=\"color: #000000\">[])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">size_t<\/span><span style=\"color: #000000\"> i, j;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #AF00DB\">for<\/span><span style=\"color: #000000\"> (i = <\/span><span style=\"color: #098658\">0<\/span><span style=\"color: #000000\">, j = <\/span><span style=\"color: #795E26\">strlen<\/span><span style=\"color: #000000\">(array); i &lt; j; )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> temp = <\/span><span style=\"color: #001080\">array<\/span><span style=\"color: #000000\">[i];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #001080\">array<\/span><span style=\"color: #000000\">[i++] = <\/span><span style=\"color: #001080\">array<\/span><span style=\"color: #000000\">[--j];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #001080\">array<\/span><span style=\"color: #000000\">[j] = temp;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">main<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">argc<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">*<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">argv<\/span><span style=\"color: #000000\">[])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> zeroChars[]  = <\/span><span style=\"color: #A31515\">&quot;&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> oneChar[]    = <\/span><span style=\"color: #A31515\">&quot;X&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> theBeatles[] = <\/span><span style=\"color: #A31515\">&quot;John Paul George &amp; Ringo&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> beatleSong[] = <\/span><span style=\"color: #A31515\">&quot;Strawberry Fields Forever&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">reverse<\/span><span style=\"color: #000000\">(zeroChars);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">printf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #A31515\">&quot;Reversed: &#39;<\/span><span style=\"color: #001080\">%s<\/span><span style=\"color: #A31515\">&#39;<\/span><span style=\"color: #EE0000\">\\n<\/span><span style=\"color: #A31515\">&quot;<\/span><span style=\"color: #000000\">, zeroChars);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">reverse<\/span><span style=\"color: #000000\">(oneChar);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">printf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #A31515\">&quot;Reversed: &#39;<\/span><span style=\"color: #001080\">%s<\/span><span style=\"color: #A31515\">&#39;<\/span><span style=\"color: #EE0000\">\\n<\/span><span style=\"color: #A31515\">&quot;<\/span><span style=\"color: #000000\">, oneChar);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">reverse<\/span><span style=\"color: #000000\">(theBeatles);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">printf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #A31515\">&quot;Reversed: &#39;<\/span><span style=\"color: #001080\">%s<\/span><span style=\"color: #A31515\">&#39;<\/span><span style=\"color: #EE0000\">\\n<\/span><span style=\"color: #A31515\">&quot;<\/span><span style=\"color: #000000\">, theBeatles);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">reverse<\/span><span style=\"color: #000000\">(beatleSong);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">printf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #A31515\">&quot;Reversed: &#39;<\/span><span style=\"color: #001080\">%s<\/span><span style=\"color: #A31515\">&#39;<\/span><span style=\"color: #EE0000\">\\n<\/span><span style=\"color: #A31515\">&quot;<\/span><span style=\"color: #000000\">, beatleSong);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #AF00DB\">return<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #098658\">0<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span><\/code><\/pre><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>Cut and paste this program into your C\/C++ compiler, compile it, link it, and run it.&nbsp; Convince yourself that it works.<\/p>\n\n\n\n<p>Explain the algorithm it uses.<\/p>\n<\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Step_3\"><\/span>Step 3:<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Now it&#8217;s your turn to write some code:&nbsp;&nbsp;<\/p>\n\n\n\n<p>Modify the&nbsp;<code><strong>reverse<\/strong><\/code>&nbsp;function to no longer use array indices, but instead&nbsp;<em>use pointers throughout<\/em>.&nbsp; Your final source code should contain absolutely no square brackets (<code><strong>[]<\/strong><\/code>) in the&nbsp;<code><strong>reverse<\/strong><\/code>&nbsp;function (although you will retain those in the&nbsp;<code><strong>main<\/strong><\/code>&nbsp;function &#8212; your task is only to implement the new version of the&nbsp;<code><strong>reverse<\/strong><\/code>&nbsp;function).<\/p>\n\n\n\n<p>The task is simply to translate the same algorithm as before into a form that uses pointers instead of array indexing.&nbsp; Do not try to invent a new algorithm.&nbsp; Just as the first implementation used three lines of code inside the body of the for loop, the pointer version can be implemented using three lines, also.&nbsp; That should be your goal.<\/p>\n\n\n\n<p>Here&#8217;s a starting point.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#000000;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/\n\/\/  main.cpp\n\/\/  Assignment 1a\n\/\/\n\/\/  Created by Bryan Higgs on 10\/28\/24.\n\/\/\n\n#include &lt;stdio.h&gt;\n#include &lt;string.h&gt;\n\nstatic void reverse(char* string)\n{\n  char *fptr, *bptr;\n  for ( \/* ... *\/ )\n  {\n      \/* ... *\/\n  }\n}\n\nint main(int argc, const char * argv[])\n{\n  char zeroChars[]  = &quot;&quot;;\n  char oneChar[]    = &quot;X&quot;;\n  char theBeatles[] = &quot;John Paul George &amp; Ringo&quot;;\n  char beatleSong[] = &quot;Strawberry Fields Forever&quot;;\n\n  reverse(zeroChars);\n  printf(&quot;Reversed: '%s'\\n&quot;, zeroChars);\n\n  reverse(oneChar);\n  printf(&quot;Reversed: '%s'\\n&quot;, oneChar);\n\n  reverse(theBeatles);\n  printf(&quot;Reversed: '%s'\\n&quot;, theBeatles);\n\n  reverse(beatleSong);\n  printf(&quot;Reversed: '%s'\\n&quot;, beatleSong);\n\n  return 0;\n}\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  main.cpp<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Assignment 1a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Created by Bryan Higgs on 10\/28\/24.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&lt;stdio.h&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&lt;string.h&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">void<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">reverse<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #0000FF\">char*<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">string<\/span><span style=\"color: #000000\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> *fptr, *bptr;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #AF00DB\">for<\/span><span style=\"color: #000000\"> (<\/span><span style=\"color: #008000\"> \/* ... *\/<\/span><span style=\"color: #000000\"> )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">      \/* ... *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">main<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">argc<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">*<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">argv<\/span><span style=\"color: #000000\">[])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> zeroChars[]  = <\/span><span style=\"color: #A31515\">&quot;&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> oneChar[]    = <\/span><span style=\"color: #A31515\">&quot;X&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> theBeatles[] = <\/span><span style=\"color: #A31515\">&quot;John Paul George &amp; Ringo&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> beatleSong[] = <\/span><span style=\"color: #A31515\">&quot;Strawberry Fields Forever&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">reverse<\/span><span style=\"color: #000000\">(zeroChars);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">printf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #A31515\">&quot;Reversed: &#39;<\/span><span style=\"color: #001080\">%s<\/span><span style=\"color: #A31515\">&#39;<\/span><span style=\"color: #EE0000\">\\n<\/span><span style=\"color: #A31515\">&quot;<\/span><span style=\"color: #000000\">, zeroChars);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">reverse<\/span><span style=\"color: #000000\">(oneChar);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">printf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #A31515\">&quot;Reversed: &#39;<\/span><span style=\"color: #001080\">%s<\/span><span style=\"color: #A31515\">&#39;<\/span><span style=\"color: #EE0000\">\\n<\/span><span style=\"color: #A31515\">&quot;<\/span><span style=\"color: #000000\">, oneChar);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">reverse<\/span><span style=\"color: #000000\">(theBeatles);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">printf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #A31515\">&quot;Reversed: &#39;<\/span><span style=\"color: #001080\">%s<\/span><span style=\"color: #A31515\">&#39;<\/span><span style=\"color: #EE0000\">\\n<\/span><span style=\"color: #A31515\">&quot;<\/span><span style=\"color: #000000\">, theBeatles);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">reverse<\/span><span style=\"color: #000000\">(beatleSong);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">printf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #A31515\">&quot;Reversed: &#39;<\/span><span style=\"color: #001080\">%s<\/span><span style=\"color: #A31515\">&#39;<\/span><span style=\"color: #EE0000\">\\n<\/span><span style=\"color: #A31515\">&quot;<\/span><span style=\"color: #000000\">, beatleSong);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #AF00DB\">return<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #098658\">0<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span><\/code><\/pre><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>Note that I&#8217;ve already changed the argument type and name of the&nbsp;<code><strong>reverse<\/strong><\/code>&nbsp;function so it no longer uses an array syntax.&nbsp; The ellipses within comments ( <code>\/* <strong>...<\/strong> *\/<\/code> ) are where you need to add your code.<\/p>\n<\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Step_4\"><\/span>Step 4:<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Now, wouldn&#8217;t it be nice if the&nbsp;<code><strong>reverse<\/strong><\/code>&nbsp;function were implemented not to reverse the string in place, but instead return a whole new string which is the reverse of the original, and not change the original at all?<\/p>\n\n\n\n<p>Here&#8217;s an attempt to implement such a version of&nbsp;<code><strong>reverse<\/strong><\/code>&nbsp;(I&#8217;ve gone back to an array implementation, because what I&#8217;m trying to illustrate here isn&#8217;t affected by which version of the original algorithm we use.)<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono-NL.ttf\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#000000;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/\n\/\/  main.cpp\n\/\/  Assignment 1a\n\/\/\n\/\/  Created by Bryan Higgs on 10\/28\/24.\n\/\/\n\n#include &lt;stdio.h&gt;\n#include &lt;string.h&gt;\n\nstatic char * reverse(const char *string)\n{\n  char array[256];\n  size_t i, j;\n  strncpy(array, string, 256);\n  for (i = 0, j = strlen(array); i &lt; j; )\n  {\n      char temp = array[i];\n      array[i++] = array[--j];\n      array[j] = temp;\n  }\n  return array;\n}\n\nint main(int argc, const char * argv[])\n{\n  char zeroChars[]  = &quot;&quot;;\n  char oneChar[]    = &quot;X&quot;;\n  char theBeatles[] = &quot;John Paul George &amp; Ringo&quot;;\n  char beatleSong[] = &quot;Strawberry Fields Forever&quot;;\n  char *reversedBeatles;\n  char *reversedSong;\n\n  printf(&quot;Reversed: '%s'\\n&quot;, reverse(zeroChars));\n  printf(&quot;Reversed: '%s'\\n&quot;, reverse(oneChar));\n\n  reversedBeatles = reverse(theBeatles);\n  reversedSong    = reverse(beatleSong);\n\n  printf(&quot;Reversed: '%s'\\n&quot;, reversedBeatles);\n  printf(&quot;Reversed: '%s'\\n&quot;, reversedSong);\n\n  return 0;\n}\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  main.cpp<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Assignment 1a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/  Created by Bryan Higgs on 10\/28\/24.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #008000\">\/\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&lt;stdio.h&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">#include<\/span><span style=\"color: #0000FF\"> <\/span><span style=\"color: #A31515\">&lt;string.h&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">*<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">reverse<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">*<\/span><span style=\"color: #001080\">string<\/span><span style=\"color: #000000\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">array<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #098658\">256<\/span><span style=\"color: #000000\">];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">size_t<\/span><span style=\"color: #000000\"> i, j;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">strncpy<\/span><span style=\"color: #000000\">(array, string, <\/span><span style=\"color: #098658\">256<\/span><span style=\"color: #000000\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #AF00DB\">for<\/span><span style=\"color: #000000\"> (i = <\/span><span style=\"color: #098658\">0<\/span><span style=\"color: #000000\">, j = <\/span><span style=\"color: #795E26\">strlen<\/span><span style=\"color: #000000\">(array); i &lt; j; )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">      <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> temp = <\/span><span style=\"color: #001080\">array<\/span><span style=\"color: #000000\">[i];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">      <\/span><span style=\"color: #001080\">array<\/span><span style=\"color: #000000\">[i++] = <\/span><span style=\"color: #001080\">array<\/span><span style=\"color: #000000\">[--j];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">      <\/span><span style=\"color: #001080\">array<\/span><span style=\"color: #000000\">[j] = temp;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #AF00DB\">return<\/span><span style=\"color: #000000\"> array;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">main<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #0000FF\">int<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">argc<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #0000FF\">const<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">*<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">argv<\/span><span style=\"color: #000000\">[])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> zeroChars[]  = <\/span><span style=\"color: #A31515\">&quot;&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> oneChar[]    = <\/span><span style=\"color: #A31515\">&quot;X&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> theBeatles[] = <\/span><span style=\"color: #A31515\">&quot;John Paul George &amp; Ringo&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> beatleSong[] = <\/span><span style=\"color: #A31515\">&quot;Strawberry Fields Forever&quot;<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> *reversedBeatles;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #0000FF\">char<\/span><span style=\"color: #000000\"> *reversedSong;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">printf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #A31515\">&quot;Reversed: &#39;<\/span><span style=\"color: #001080\">%s<\/span><span style=\"color: #A31515\">&#39;<\/span><span style=\"color: #EE0000\">\\n<\/span><span style=\"color: #A31515\">&quot;<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #795E26\">reverse<\/span><span style=\"color: #000000\">(zeroChars));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">printf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #A31515\">&quot;Reversed: &#39;<\/span><span style=\"color: #001080\">%s<\/span><span style=\"color: #A31515\">&#39;<\/span><span style=\"color: #EE0000\">\\n<\/span><span style=\"color: #A31515\">&quot;<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #795E26\">reverse<\/span><span style=\"color: #000000\">(oneChar));<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  reversedBeatles = <\/span><span style=\"color: #795E26\">reverse<\/span><span style=\"color: #000000\">(theBeatles);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  reversedSong    = <\/span><span style=\"color: #795E26\">reverse<\/span><span style=\"color: #000000\">(beatleSong);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">printf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #A31515\">&quot;Reversed: &#39;<\/span><span style=\"color: #001080\">%s<\/span><span style=\"color: #A31515\">&#39;<\/span><span style=\"color: #EE0000\">\\n<\/span><span style=\"color: #A31515\">&quot;<\/span><span style=\"color: #000000\">, reversedBeatles);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #795E26\">printf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #A31515\">&quot;Reversed: &#39;<\/span><span style=\"color: #001080\">%s<\/span><span style=\"color: #A31515\">&#39;<\/span><span style=\"color: #EE0000\">\\n<\/span><span style=\"color: #A31515\">&quot;<\/span><span style=\"color: #000000\">, reversedSong);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #000000\">  <\/span><span style=\"color: #AF00DB\">return<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #098658\">0<\/span><span style=\"color: #000000\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span><\/code><\/pre><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>Cut and paste this version into your C\/C++ compiler, and compile, link and run the program.&nbsp; In particular, pay attention to what the compiler tells you.<\/p>\n\n\n\n<p>Does the program produce the correct results?&nbsp; Why?<\/p>\n\n\n\n<p>This version of the&nbsp;<code><strong>reverse<\/strong><\/code>&nbsp;function has at least three problems that I can think of, which result from the code added to the body of the for loop.&nbsp; Can you figure out what those problems are?&nbsp;<em>[Hint: Try to understand how local variables are typically implemented. Also, look up the details of the&nbsp;<\/em><code><strong>strncpy<\/strong><\/code>&nbsp;<em>function.]<\/em><\/p>\n\n\n\n<p>Is there any way you can think of to fix the problem? Try to fix the problems.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Overview In C and C++, there is a very close association between&nbsp;arrays&nbsp;and&nbsp;pointers.&nbsp; This part of the assignment is intended to give you a little practice with combining the two, and with the use of various related operators: Step 1: First, before you start any of the following, point your browser at: A Tutorial on Pointers [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":30,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1573","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/pages\/1573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/comments?post=1573"}],"version-history":[{"count":8,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/pages\/1573\/revisions"}],"predecessor-version":[{"id":1679,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/pages\/1573\/revisions\/1679"}],"up":[{"embeddable":true,"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/pages\/30"}],"wp:attachment":[{"href":"https:\/\/bhiggs.x10hosting.com\/PracticalCPlusPlusProgramming\/index.php\/wp-json\/wp\/v2\/media?parent=1573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}