Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 두칸 프릴 오버핏 후드티
- 대림디움 대림바스플랜 PL-3070 탑카운터형 세면대/욕실/화장실/세면도기
- 남쪽나무 세면대 세면대 세트 (스마트거울) 벽걸이세면대 이케아세면대 세면기
- 샤오미 미밴드 7 스마트밴드
- 1개
- 오토비 AZ100TR 32G 전후방 FHD 2채널 트럭 화물차 전용 블랙박스 보증기간 2년 20m케이블 포함 후방 적외선 방수 AS 2년보장
- 삼성 갤럭시워치5
- 더블탭스 22SS 정글 01 셔츠 WTAPS JUNGLE 01 GREIGE M
- 위드리빙 대용량 옷 수납 방수 바구니
- 네스파 다야몬드은박 후드티
- 올리비아 스텐 세면대 세트
- 내셔널지오그래픽 피너스 빅로고 라운드넥 긴팔 티셔츠 카본 블랙
- 코멧 접이식 투명 리빙박스 56L 대형 2개입
- 잡잡 NBR 요가매트 스탠다드 운동매트 10mm 퍼플
- 봄봄 골드라인 4023G 탑볼세면대 화이트골드 카운타 도기볼 카페세면대
- 톰브라운 명품톰브라운 23SS 더블페이스 니트 아우터형 포켓 셔츠 MJT291A 07545 415
- 리빙앤트리 펠리컨 박스 대
- 러버메이드 벤티드 브루트(75L) 원형 컨테이너 리빙박스
- 굿아이템 양면오픈형 투명 접이식 리빙박스 폴딩박스 옷정리함 수납박스 펜트리수납함
- 22FW 이바나 빈티지 체크 셔츠 더스트핑크 8054631
- 22FW 로고 패치 포켓 체크 셔츠 2F000 03 M2359 F41
- 미네 리빙다이닝 6인 원목 코너형 식탁세트(소파형)
- list #pop #remove #del #append #insert #list형 #파이썬 파이썬 기본 문법 #파이썬 list
- 23SS 스트라이프 오버핏 셔츠 723033 V2L30 9066
- ipTIME 유무선공유기
- [제이앤제나] 허리에 무리없는 신생아부터 역류방지쿠션_앨리펀블루 역류방지쿠션
- 반스 올드스쿨 VN000D3HY28
- 긍정
- 8052 블랙라인 정사각 세면기
- ChatGPT
Archives
- Today
- Total
냥집사의 개발일지
C언어 - 포인터 (Pointer) : 포인터를 사용하는 이유 (1) 본문
반응형
안녕하세요 오늘은 포인터를 사용하는 여러 가지 이유 中
함수 간에 효과적으로 데이터를 공유하는 장점에 대해 알아보겠습니다.
포인터를 배울때 가장 쉽게 접할 수 있는 SWAP 함수를 통해 정리해봅시다~
swap 함수는 포인터 2개를 인수로 받아 각각의 포인터가 가리키는 값을 바꾸어 저장하는 기능을 합니다.
코드 정리
1, a변수에 3을 저장하고 포인터 pa가 a를 가리키도록 합니다.
2. b변수에 7을 저장하고 포인터 pb가 b를 가리키도록 합니다.
3. swap 함수를 통해 pa와 pb가 가리키는 변수를 바꾸어줍니다.
#include <stdio.h>
void swap(int* p1, int* p2){
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main(){
int a = 3;
int b = 7;
int* pa = &a;
int* pb = &b;
printf("before swap\n");
printf("a : %d\n",a);
printf("b : %d\n",b);
swap(pa,pb);
printf("after swap\n");
printf("a : %d\n",a);
printf("b : %d\n",b);
return 0;
}
위의 코드의 결과는 예상대로
swap 함수를 통과하기 전 a : 3, b : 7
swap 함수를 통과한 후 a : 7, b : 3
인 것을 확인할 수 있었습니다.
이때 포인터 없이 변수의 값을 swap 함수의 인수로 하면 되지 않을까?라는 생각이 들기도 하는데요.
하지만!! swap 함수 안에서 선언된 변수들은 main 함수 안에서는 접근할 수 없으므로 swap가 되지 않습니다.
#include <stdio.h>
void swap(int c, int d){
int temp;
temp = c;
c = d;
d = temp;
}
int main(){
int a = 3;
int b = 7;
printf("before swap\n");
printf("a : %d\n",a);
printf("b : %d\n",b);
swap(a,b);
printf("after swap\n");
printf("a : %d\n",a);
printf("b : %d\n",b);
return 0;
}
아래 결과 처럼 값이 바뀌지 않은 것을 확인할 수 있습니다.
이처럼 포인터는 어렵지만 한 번 이해해두면 코딩의 범위가 넓어지고 효율적인 코딩이 가능합니다.
다음 포스팅에서는 배열과 포인터의 관계에 대해 자세히 정리해보겠습니다.
좋은 하루 보내세요~~
'C언어' 카테고리의 다른 글
C언어 - 변수의 종류 (0) | 2022.09.12 |
---|---|
C언어 - 배열 & 포인터 (array & pointer) (0) | 2022.09.11 |
C언어 - 포인터 (Pointer) : 포인터 & 주소 (0) | 2022.09.09 |
C언어 - 포인터 (Pointer) : 기본 개념 (0) | 2022.09.07 |
C언어 - 배열 (Array) : 문자 배열의 선언 & 초기화 (0) | 2022.09.06 |
Comments