336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

개념 : 


call by reference : 참조 형태로 주소값을 부르는 형태를 일컫습니다. 정확하고 명료하게는 call by address라고도 합니다.


이것을 명확히 구분하자는 분도 있고 그냥 한꺼번에 call by reference 로 부르자는 분들이 존재 합니다 ..


저의 입장은 그냥 중립입니다. 무엇이 되었든 상황에 맞게 사용하고 부르는 것이 맞아요.




call by value : 순수 값에 의한 참조를 뜻합니다.


이둘의 차이점은 수정되었을시 원본에 대한 영향력이 있다 없다로 구분 습니다.

 



소스코드 : main.c

#include <stdio.h>


void CallByReference(int *pReference, int nCanged);

void CallByValue(int nValue, int nCanged);


int main(void)

{

int value1 = 3;

int value2 = 13;


printf("source1 : %d\n", value1);

printf("source2 : %d\n", value2);


CallByReference(&value1, 8);

CallByValue(value2, 1000);



printf("source1 : %d\n", value1);

printf("source2 : %d\n", value2);

return 0;

}


void CallByReference(int *pReference, int nCanged)

{

puts("Call By Reference");

*pReference = nCanged;

printf("Dest : %d\n", *pReference);

}


void CallByValue(int nValue, int nChanged)

{

puts("Call By Value");

nValue = nChanged;

printf("Dest : %d\n", nValue);

}



결과



 #c언어, #c언어입문, #프로그램입문, #CallByReference,#callByValue,#포인터개념

 

'Programing - C > C Basic grammar ' 카테고리의 다른 글

100 다차원 배열  (0) 2017.08.04
099 포인터 배열  (0) 2017.08.04
097 포인터 개념  (0) 2017.08.04
096 memset  (0) 2017.08.04
095 memmove_s  (0) 2017.07.28
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

개념 : 


1. 포인터 변수는 메모리 주소를 기록하는 공간 입니다.

2. * (애틸리스크) 를 자료형과 변수이름 사이에 넣습니다.

3. 자료형에 상관없이 포인터는 32bit 시스템에서 4Byte, 64bit 시스템에서 8Byte 공간을 차지 합니다

4. &(앤퍼센트) 는 변수 이름에 앞에 붙이면 주소값을 말합니다. 그래서 주소 연산자라고 부르기도 합니다.



소스코드 : main.c

#include <stdio.h>


int main(void)

{

char *pCharPointer = NULL;

short *pShortPointer = NULL;

long  *pLongPointer = NULL;

int *pIntPointer = NULL;

__int8 *pInt8Pointer = NULL;

__int16 *pInt16Pointer = NULL;

__int32 *pInt32Pointer = NULL;

__int64 *pInt64Pointer = NULL;

float *pFloatPointer = NULL;

double *pDoublePointer = NULL;



printf("char 의 포인터 변수의 크기 : %d Byte \n", sizeof(pCharPointer));

printf("short 의 포인터 변수의 크기 : %d Byte \n", sizeof(pShortPointer));

printf("long 의 포인터 변수의 크기 : %d Byte \n", sizeof(pLongPointer));

printf("int 의 포인터 변수의 크기 : %d Byte \n", sizeof(pIntPointer));

printf("__int8 의 포인터 변수의 크기 : %d Byte \n", sizeof(pInt8Pointer));

printf("__int16 의 포인터 변수의 크기 : %d Byte \n", sizeof(pInt16Pointer));

printf("__int32 의 포인터 변수의 크기 : %d Byte \n", sizeof(pInt32Pointer));

printf("__int64 의 포인터 변수의 크기 : %d Byte \n", sizeof(pInt64Pointer));

printf("float 의 포인터 변수의 크기 : %d Byte \n", sizeof(pFloatPointer));

printf("double 의 포인터 변수의 크기 : %d Byte \n", sizeof(pDoublePointer));

return 0;

}


결과:


1. 32bit 플랫폼




2. 64bit 플랫폼




 #c언어, #c언어입문, #프로그램입문, #포인터,#pointer,#포인터크기,#포인터개념

 


'Programing - C > C Basic grammar ' 카테고리의 다른 글

099 포인터 배열  (0) 2017.08.04
098 Call by Reference & Call by Value  (0) 2017.08.04
096 memset  (0) 2017.08.04
095 memmove_s  (0) 2017.07.28
094 memcmp 두메모리 비교  (0) 2017.07.28

+ Recent posts