Shammer's Philosophy

My private adversaria

文字列を返す関数

文字列を返す関数を書いてみた。非常にシンプルな例だが。。。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char * returnString(char * v){
    char * response;
    response = (char *)malloc(strlen(v));
    strcpy(response, v);
    return response;
}

int main(int argc, char * args[]){
    char * v1 = "0123456789";
    char * v2 = returnString(v1);
    printf("v1 value is %s.\n", v1);
    printf("v2 value is %s.\n", v2);
    printf("v1 address is %p.\n", v1);
    printf("v2 address is %p.\n", v2);
    free(v2);
    return 0;
}

実行結果は以下のような感じ。

$ ./a.out
v1 value is 0123456789.
v2 value is 0123456789.
v1 address is 0x4007bc.
v2 address is 0x684010.

値は同じだが、アドレスは異なっているのがわかる。