[ create a new paste ] login | about

Link: http://codepad.org/EhY8yIi4    [ raw code | output | fork ]

C, pasted on Apr 7:
#include <stdio.h>
#include <error.h>
#include <stdlib.h>


typedef struct DF_LIST
{
    int a;
}ListType;

char fn_error(char *message); //함수 선언


int fn_CallByReference(char *  r)
{
    printf("[IN] fn_CallByReference : %s\n", r);
    *(r+0) = 'a';
    *(r+1) = 'b';
    *(r+2) = 'c';
    *(r+3) = 'd';
}


int fn_CallByValue(char  r [10])
{
    printf("[IN] fn_CallByValue : %s\n", r);
    r[0] = '1';
    r[1] = '2';
    r[2] = '3';
    r[3] = '4';
}


int fn_CallByValueRef(char  r [10])
{
    printf("[IN] fn_CallByValueRef : %s\n", r);
    *(r+0) = '1';
    *(r+1) = '2';
    *(r+2) = '3';
    *(r+3) = '4';
}


int get_entry(ListType *list, int pos)
{
    error(0,0,"오류 발생");
    fn_error("오류 발생");
}

//error()
//http://man7.org/linux/man-pages/man3/error.3.html

//exit()
//http://man7.org/linux/man-pages/man3/exit.3.html

char fn_error(char *message)
{
    fprintf(stderr, "%s\n", message);
    exit(1);
    return 0;
}

int main()
{
    //
    char ca[10] = {"test"};
    fn_CallByReference(&ca[0]);
    printf("[OUT] main() - fn_CallByReference : %s\n", ca);

    //
    fn_CallByValue(&ca[0]);
    printf("[OUT] main() - fn_CallByValue : %s\n", ca);

    fn_CallByValueRef(&ca[0]);
    printf("[OUT] main() - fn_CallByValueRef : %s\n", ca);

    //
    char * p = (char*) malloc (10);
    memset(p, 0x00, 10);
    *(p+0) = 't';
    *(p+1) = 'e';
    *(p+2) = 's';
    *(p+3) = 't';

    fn_CallByReference(p);
    printf("[OUT] main() - fn_CallByReference : %s\n", ca);

    //
    memset(p, 0x00, 10);
    *(p+0) = 't';
    *(p+1) = 'e';
    *(p+2) = 's';
    *(p+3) = 't';

    fn_CallByValue(p);
    printf("[OUT] main() - fn_CallByValue : %s\n", p);

    fn_CallByValueRef(p);
    printf("[OUT] main() - fn_CallByValueRef : %s\n", p);


    free(p);

    //
    ListType *list;
    get_entry(list, 0);
    fn_error("위치 오류");

    return 0;
}


Output:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[IN] fn_CallByReference : test
[OUT] main() - fn_CallByReference : abcd
[IN] fn_CallByValue : abcd
[OUT] main() - fn_CallByValue : 1234
[IN] fn_CallByValueRef : 1234
[OUT] main() - fn_CallByValueRef : 1234
[IN] fn_CallByReference : test
[OUT] main() - fn_CallByReference : 1234
[IN] fn_CallByValue : test
[OUT] main() - fn_CallByValue : 1234
[IN] fn_CallByValueRef : 1234
[OUT] main() - fn_CallByValueRef : 1234
/t: 오류 발생
오류 발생


Create a new paste based on this one


Comments: