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 | 31 |
Tags
- 개발자가 되기 위해 꼭 알아야 하는 IT용어
- C언어 #문자열변환 #정수형변환
- 그룹핑
- GIT
- 생성자 #자바 #기록남기기
- MODIFY
- group by
- COMMIT
- SQL
- 에러포스팅
- 단축키정리
- MVC #디자인패턴
- 크롬브라우저
- Numpy #TIL #넘파이 기초
- 클래스 #아이디
- 기록하기
- 스프링 입문
- 작업 영역
- 머신러닝 #학습내용정리
- SafeUpdate
- 머신러닝 #회귀 #규제
- 옵셔널태그
- 커밋
- scanf
- 김영한 #SOLID #객체지향
- 개발공부
- 공부내용정리
- 스프링부트
- 컬럼수정
- 파이썬
Archives
- Today
- Total
데이터 분석가 몽구리
[C언어] 포인터 본문
주소 연산자 : &
주소라 하면 변수가 할당된 메모리 공간의 시작 주소를 의미합니다. 주소 연산자 &를 사용해서 시작주소를 구합니다.
#include <stdio.h>
int main(void)
{
int a;
double b;
char c;
printf("int형 변수의 주소: %u\n", &a);
printf("double형 변수의 주소: %u\n", &b);
printf("char형 변수의 주소: %u\n", &c);
return 0;
}
int형 변수는 980번지부터 983번지까지 4바이트에 할당되었을 겁니다.
double형 변수는 016번지부터 023번지까지 8바이트가 할당되었으며 char형변수는 044번지 한 바이트에 할당되었을 것입니다.
포인터와 간접 참조 연산자: *
#include <stdio.h>
int main(void)
{
int a;
int* pa;
pa = &a; //포인터에 a의 주소 대입
*pa = 10;
printf("포인터로 a 값 출력 : %d\n", *pa);
printf("변수명으로 a값 출력: %d\n", a);
return 0;
}
int *pa 는 포인터를 선언하는 부분입니다. 포인터의 자료형은 변수의 자료형을 적습니다.
예를 들어 int 형 변수의 주소를 저장하면 int를 사용하고 double형 변수의 주소를 저장하면 double을 사용합니다.
여러 가지 포인터 사용해보기
#include <stdio.h>
int main(void)
{
int a = 10, b = 15, total;
double avg;
int* pa, * pb;
int* pt = &total;
double* pg = &avg;
pa = &a;
pb = &b;
*pt = *pa + *pb;
*pg = *pt / 2.0;
printf("두 정수의 값: %d, %d\n", *pa, *pb);
printf("두 정수의 합: %d\n", *pt);
printf("두 정수의 평균: %.1lf\n", *pg);
return 0;
}
const를 사용한 포인터
const 예약어를 포인터 사용하면 가리키는 변수의 값을 바꿀 수 없다는 의미로, 변수에 사용하는 것과는 다른 의미를 가집니다.
#include <stdio.h>
int main(void)
{
int a = 10, b = 20;
const int* pa = &a;
printf("변수 a 값: %d\n", *pa);
pa = &b;
printf("변수 b값: %d\n", *pa);
pa = &a;
a = 20;
printf("변수 a값: %d\n", *pa);
return 0;
}
pa는 const의 사용과는 무관하게 변수의 b의 주소를 저장하고 그 값을 간접 참조하여 출력하고 있습니다
포인터 사용되는 const는 pa가 가리키는 변수 a는 pa를 간접 참조하여 바꿀 수 없다는 것입니다. 만약 *pa=20;과 같이 a값을 바꾸고자 한다면
에러메시지를 출력하게 됩니다.
'C' 카테고리의 다른 글
[C] 문자열과 포인터 (0) | 2024.09.11 |
---|---|
[C언어] 문자열과 포인터 (0) | 2024.09.11 |
[C언어]숫자 형식의 문자열 처리 (0) | 2024.04.22 |
[C언어] 문자열 함수 정리 (0) | 2024.04.17 |