How do these both work? I would think the second one wouldn't work because when it is called here copy_string(line, line1) since it does not have a &. It also does not use a pointer in the function header copy_string(char line[], char line1[])
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
void manipulateStrings(char *line[], char line1[])
{
    strcpy (line, line1);
}
int main(int argc, char *argv[])
{
    char line[3] = {0};
    char line1[80] = "hi";
    manipulateStrings(&line, line1);
    printf("line is %s \n", line);
    printf("line1 is %s \n", line1);
    return 0;
}
Surprised this one works.
#include <stdio.h>
#include <string.h>
void copy_string(char line[], char line1[]) {
    strcpy (line, line1);
}
int main() {
    char line[3] = {0};
    char line1[80] = "hi";
    copy_string(line, line1);
    printf("line is %s \n", line);
    printf("line1 is %s \n", line1);
    return 0;
   return 0; 
}
