Hi, dickie bird I think you got it wrong when passing a char array by reference, here is a small program to show the difference between passing int values and arrays by reference compared to by value....not the use of the ampersand ( & ) in the call to refer_check function and the use of the pointer symbol ( * ) in the function and in the prototype and definition.
#include <stdio.h>
#include <string.h>
void refer_check(char *array, int *num);
void value_check(char array[], int num);
int main(void)
{
char arrayname[50];
int number = 1;
strcpy(arrayname,"Lets Start In Main"

;
printf("\nString in main before is %s", arrayname);
printf("\nNumber in main before is %d", number);
refer_check(arrayname, &number);
printf("\n\nString in main after reference function is %s (changed)", arrayname);
printf("\nNumber in main after reference function is %d (changed)", number);
value_check(arrayname, number);
printf("\n\nString in main after value Function is %s (changed)", arrayname);
printf("\nNumber in main after value Function is %d (not changed)", number);
return 0;
}
void refer_check(char *array, int *num)
{
strcpy(array, "Refence Function"

;
printf("\n\nString in the reference function is %s", array);
*num = 10;
printf("\nNumber in the reference function is %d", *num);
}
void value_check(char array[], int num)
{
strcpy(array, "Value Function"

;
printf("\n\nString in the value function is %s", array);
num = 20;
printf("\nNumber in the value function is %d", num);
}
you can see how the values change if you compile and run this.
Hoping to get certified..in C programming.