방명록
- 포인터2022년 04월 17일 22시 13분 21초에 업로드 된 글입니다.작성자: 핀수728x90반응형
포인터
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
주소값
데이터의 주소값이란 해당 데이터가 저장된 메모리의 시작 주소를 의미
int 형 데이터는 4바이트의 크기를 가지지만,
int 형 데이터의 주소값은 시작 주소 1바이트만을 가리킴
포인터
메모리의 주소값을 저장하는 변수, 포인터 변수라고도 불림
int n = 100; // 변수의 선언 int *ptr = &n; // 포인터의 선언
포인터 연산자
주소 연산자 (&) (= 번지 연산자)
변수의 이름 앞에 사용하여 해당 변수의 주소값을 반환
참조 연산자 (*)
포인터의 이름이나 주소 앞에 사용, 포인터가 가리키는 주소에 저장된 값을 반환
문법
타입* 포인터이름 = &변수이름; 또는 타입* 포인터이름 = 주소값;
- 타입 : 포인터가 가리키고자 하는 변수의 타입
- 포인터 이름 : 포인터가 선언된 후에 포인터에 접근하기 위해 사용됨
포인터를 선언한 후 참조 연산자 (*) 를 사용하기 전에 포인터는 반드시 먼저 초기화 되어야 한다.
그렇지 않으면 의도하지 않은 메모리의 값을 변경하기 때문
=> 초기화하지 않은 포인터에 참조 연산자를 사용하면 오류를 발생시킴
=> 포인터의 선언과 동시에 초기화를 함께하는 것이 좋다
포인터의 참조
포인터의 주소값과 함께 포인터가 가리키고 있는 주소값의 데이터를 참조하는 예제
int x = 7; // 변수의 선언 int *ptr = &x; // 포인터의 선언 int *pptr = &ptr; // 포인터의 참조
변수 x의 주소값 포인터 선언
포인터 *ptr 가 가리키고 있는 주소값의 데이터를 *pptr 가 참조함
int x = 1234; double y = 3.14; int* ptr_x = &x; double* ptr_y = &y; printf("포인터의 크기는 %d입니다.\n", sizeof(ptr_num01)); printf("포인터 ptr_num01이 가리키고 있는 주소값은 %#x입니다.\n", ptr_num01); printf("포인터 ptr_num02가 가리키고 있는 주소값은 %#x입니다.\n", ptr_num02); printf("포인터 ptr_num01이 가리키고 있는 주소에 저장된 값은 %d입니다.\n", *ptr_num01); printf("포인터 ptr_num02가 가리키고 있는 주소에 저장된 값은 %f입니다.\n", *ptr_num02); // 실행결과 // 포인터의 크기는 8입니다. // 포인터 ptr_num01이 가리키고 있는 주소값은 0x7c255e4입니다. // 포인터 ptr_num02가 가리키고 있는 주소값은 0x7c255e8입니다. // 포인터 ptr_num01이 가리키고 있는 주소에 저장된 값은 1234입니다. // 포인터 ptr_num02가 가리키고 있는 주소에 저장된 값은 3.140000입니다.
예제
해당 코드의 출력 결과는?
#include <stdio.h> void main(){ char b[16] = "hello world"; printf("%s", &b[6]); }
- 문자열의 끝에는 문자열의 끝을 알리는 ‘\0’이 들어간다.
- C언어의 printf 함수에서 포맷 스트링 %s 를 통해 문자열을 출력할 경우
- 무조건 NULL 값인 ‘\0’ 바로 앞까지 출력한다.
더보기답 : world
728x90반응형'배경지식 > 배경지식' 카테고리의 다른 글
Class | Object | Instance | IoC | DI (2) 2022.07.02 SQL문 완전 정복 (0) 2022.04.17 환경변수 (0) 2021.11.07 IO (0) 2021.11.05 다다익램 (0) 2021.11.05 다음글이 없습니다.이전글이 없습니다.댓글