일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ChatGPT
- ipTIME 유무선공유기
- 대림디움 대림바스플랜 PL-3070 탑카운터형 세면대/욕실/화장실/세면도기
- 남쪽나무 세면대 세면대 세트 (스마트거울) 벽걸이세면대 이케아세면대 세면기
- 샤오미 미밴드 7 스마트밴드
- 러버메이드 벤티드 브루트(75L) 원형 컨테이너 리빙박스
- 내셔널지오그래픽 피너스 빅로고 라운드넥 긴팔 티셔츠 카본 블랙
- 더블탭스 22SS 정글 01 셔츠 WTAPS JUNGLE 01 GREIGE M
- 리빙앤트리 펠리컨 박스 대
- 봄봄 골드라인 4023G 탑볼세면대 화이트골드 카운타 도기볼 카페세면대
- 위드리빙 대용량 옷 수납 방수 바구니
- 올리비아 스텐 세면대 세트
- 8052 블랙라인 정사각 세면기
- 삼성 갤럭시워치5
- 굿아이템 양면오픈형 투명 접이식 리빙박스 폴딩박스 옷정리함 수납박스 펜트리수납함
- 코멧 접이식 투명 리빙박스 56L 대형 2개입
- 미네 리빙다이닝 6인 원목 코너형 식탁세트(소파형)
- 반스 올드스쿨 VN000D3HY28
- 오토비 AZ100TR 32G 전후방 FHD 2채널 트럭 화물차 전용 블랙박스 보증기간 2년 20m케이블 포함 후방 적외선 방수 AS 2년보장
- 긍정
- [제이앤제나] 허리에 무리없는 신생아부터 역류방지쿠션_앨리펀블루 역류방지쿠션
- 잡잡 NBR 요가매트 스탠다드 운동매트 10mm 퍼플
- 네스파 다야몬드은박 후드티
- 22FW 이바나 빈티지 체크 셔츠 더스트핑크 8054631
- 톰브라운 명품톰브라운 23SS 더블페이스 니트 아우터형 포켓 셔츠 MJT291A 07545 415
- 22FW 로고 패치 포켓 체크 셔츠 2F000 03 M2359 F41
- 1개
- 두칸 프릴 오버핏 후드티
- 23SS 스트라이프 오버핏 셔츠 723033 V2L30 9066
- list #pop #remove #del #append #insert #list형 #파이썬 파이썬 기본 문법 #파이썬 list
- Today
- Total
냥집사의 개발일지
C언어 - 데이터 공유 (call by value, call by reference) 본문
안녕하세요 오늘은 c언어에서 데이터 공유하는 방법에 대해 알아보겠습니다.
아래 목차 순으로 정리해보겠습니다.
1. call by value
2. call by reference
1. call by value
call by value 방법은 값을 복사해서 전달하는 방법입니다.
아래 코드는 main함수에 선언된 지역변수 temp가 random_func 함수의 인수가 되어 random_func 함수에 선언된 지역변수 temp로 값이 복사된 call by value의 예제입니다.
#include <stdio.h>
void random_func(int temp){
printf("temp : %d\n",temp);
}
int main(){
int temp = 5;
random_func(temp);
return 0;
}
main 함수에 선언된 지역변수 temp의 값 5가 random_func 함수에 선언된 지역변수 temp에 할당되었습니다.
따라서 random_func 함수에 선언된 지역변수 temp가 5를 출력하는 것을 확인할 수 있습니다.
2. call by reference
call by reference방법은 주소 값을 복사해서 전달하는 방법입니다.
아래 코드는 main함수에 선언된 지역변수 temp의 주소 값이 random_func 함수의 인수가 되어
random_func 함수에 선언된 포인터 ptemp가 temp를 가리키게 됩니다.
#include <stdio.h>
void random_func(int* ptemp){
printf("temp : %d\n",*ptemp);
}
int main(){
int temp = 5;
random_func(&temp);
return 0;
}
main 함수에 선언된 지역변수 temp의 주소 값 이 random_func 함수에 선언된 포인터 ptemp에 할당되었습니다.
따라서 random_func 함수에 선언된 포인터 ptemp가 가리키는 값으로 5를 출력하는 것을 확인할 수 있습니다.
(주소) 값 반환을 통해서도 데이터 공유가 가능합니다.
아래 코드는 값 반환을 통해 더하기 연산을
주소 값 반환을 통해 빼기 연산을 하였습니다.
(주소 값 반환 시 정적 변수나 전역 변수 같이 프로그램이 종료되기 전까지 메모리에서
사라지지 않는 변수만이 주소를 할당받아 반환할 수 있습니다. )
#include <stdio.h>
int add_func(int t1, int t2){
return t1+t2;
}
int* sub_func(int t1, int t2){
static int result;
result = t1-t2;
return &result;
}
int main(){
int t1 = 7;
int t2 = 3;
int r1;
int* r2;
r1 = add_func(t1,t2);
printf("add result : %d\n",r1);
r2 = sub_func(t1,t2);
printf("sub result : %d\n",*r2);
return 0;
}
데이터 공유가 정상적으로 되어 의도한 결과가 나온 것을 확인할 수 있었습니다.
오늘은 c언어에서 데이터 공유하는 방법에 대해 알아보았습니다.
1. call by value
2. call by reference
추가로 (주소) 값 반환을 통한 데이터 공유하는 방법까지 정리했습니다.
다음 포스팅에서 만나요~
좋은 하루 보내세요!!
'C언어' 카테고리의 다른 글
C언어 - 포인터 배열(array of pointer) (0) | 2022.09.15 |
---|---|
C언어 - 다차원 배열(N dimensional array) (0) | 2022.09.14 |
C언어 - 변수의 종류 (0) | 2022.09.12 |
C언어 - 배열 & 포인터 (array & pointer) (0) | 2022.09.11 |
C언어 - 포인터 (Pointer) : 포인터를 사용하는 이유 (1) (0) | 2022.09.10 |