Search code examples
cstringfunctionfunction-declaration

How is a string declared as a parameter to a function in c?


I wanted to know in what ways a string can be passed to a function and what is the corresponding syntax of the function declaration.


Solution

  • In C, a string is a sequence of character values including a zero-valued terminator - the string "hello" is represented as the sequence {'h', 'e', 'l','l', 'o', 0}.

    Strings (including string literals) are stored in arrays of character type:

    char str[] = "hello";
    

    Except when it is the operand of the sizeof or unary & operators, or is a string literal used to initialize a character array in a declaration (like above), an expression of type "N-element array of T" will be converted ("decay") to an expression of type "pointer to T" and the value of the expression will be the address of the first element of the array.

    So if you call a function like

    foo( str );
    

    what the function actually receives is a char *, not an array of char, so the prototype will be

    void foo( char * );           // declaration
    void foo( char *str ) { ... } // definition
    

    In the context of a function parameter declaration, T a[N] and T a[] are adjusted to T *a, so you could also write the prototype as

    void foo( char str[] )
    

    or

    void foo( char str[N] )
    

    but they'll both be interpreted as

    void foo( char *str )