I've been studying C, and I decided to practice using my knowledge by creating some functions to manipulate strings. I wrote a string reverser function, and a main function that asks for user input, sends it through stringreverse(), and prints the results.
Basically I just want to understand how my function works. When I call it with 'tempstr' as the first param, is that to be understood as the address of the first element in the array? Basically like saying &tempstr[0], right?
I guess answering this question would tell me: Would there be any difference if I assigned a char* pointer to my tempstr array and then sent that to stringreverse() as the first param, versus how I'm doing it now? I want to know whether I'm sending a duplicate of the array tempstr, or a memory address.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char* stringreverse(char* tempstr, char* returnptr);
    printf("\nEnter a string:\n\t");
    char tempstr[1024];
    gets(tempstr);
    char *revstr = stringreverse(tempstr, revstr); //Assigns revstr the address of the first character of the reversed string.
    printf("\nReversed string:\n"
           "\t%s\n", revstr);
    main();
    return 0;
}
char* stringreverse(char* tempstr, char* returnptr)
{
    char revstr[1024] = {0};
    int i, j = 0;
    for (i = strlen(tempstr) - 1; i >= 0; i--, j++)
    {
        revstr[j] = tempstr[i]; //string reverse algorithm
    }
    returnptr = &revstr[0];
    return returnptr;
}
Thanks for your time. Any other critiques would be helpful . . only a few weeks into programming :P
EDIT: Thanks to all the answers, I figured it out. Here's my solution for anyone wondering:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void stringreverse(char* s);
int main(void)
{
    printf("\nEnter a string:\n\t");
    char userinput[1024] = {0}; //Need to learn how to use malloc() xD
    gets(userinput);
    stringreverse(userinput);
    printf("\nReversed string:\n"
           "\t%s\n", userinput);
    main();
    return 0;
}
void stringreverse(char* s)
{
    int i, j = 0;
    char scopy[1024]; //Update to dynamic buffer
    strcpy(scopy, s);
    for (i = strlen(s) - 1; i >= 0; i--, j++)
    {
        *(s + j) = scopy[i];
    }
}
 
     
     
     
     
     
    