Here is my code with the print statement followed by its output.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int *myF(int a[],int s, int n);
int *myFunc(int x[],int size,int nnum) {
   int i;
   size += 1;
   int *y = malloc(size);
   
   for(i=0;i<size;i++) {
      if(i==0)
         *y = nnum;
      else {
         *(y+i) = x[i-1];
         printf(" %d",*(y+i)); // <-- ***THIS THING RIGHT HERE***
      }
   }
   return y;
}
int main (int argc, char *argv[]) {
   int i;
   int x[7] = {1,2,3,4,5,6,7};
   
   int *P = myFunc(x,7,12);
   for(i=0;i<8;i++) {
      if(i==0) printf("\n");
      printf(" %d",*(P+i));
   }
return 0;
}
OUTPUT:
1 2 3 4 5 6 7 
12 1 2 3 4 5 6 7  
(The second matrix is what I want the code to output)
Here is my code without the print statement followed by its output.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int *myF(int a[],int s, int n);
int *myFunc(int x[],int size,int nnum) {
   int i;
   size += 1;
   int *y = malloc(size);
   
   for(i=0;i<size;i++) {
      if(i==0)
         *y = nnum;
      else {
         *(y+i) = x[i-1];
         // printf(" %d",*(y+i)); <-- ***THIS THING RIGHT HERE*** commented out
      }
   }
   return y;
}
int main (int argc, char *argv[]) {
   int i;
   int x[7] = {1,2,3,4,5,6,7};
   
   int *P = myFunc(x,7,12);
   for(i=0;i<8;i++) {
      if(i==0) printf("\n");
      printf(" %d",*(P+i));
   }
   return 0;
}
OUTPUT:
12 1 2 3 4 5 83 0 
(This is not what I want...)
Can somebody please explain where this code is pulling 83 and 0 for the last two elements in the array just because I chose to include or exclude a random print statement?
Any help would be greatly appreciated because I can't understand how C is pulling numbers out of thin air like this.
 
     
    