포인터와 배열(Pointer & Array)

2024. 4. 1. 23:17·Dev
목차
  1. 변수는 컴퓨터 메모리에 저장
  2. 포인터(Pointer) 
  3. 배열과 포인터
  4. 문자열과 포인터

변수는 컴퓨터 메모리에 저장

이제까지 우리는 변수를 만들어서 사용하였습니다, 만든 변수들은 자료들을 저장하는 역할을 하므로 메모리에 저장됩니다 메모리에서는 각 바이트마다 고유한 주소가 매겨지며 이들의 주소를 사용해 메모리의 각 바이트에 접근할 수 있습니다


포인터(Pointer) 

포인터는 메모리의 주소를 가지고 있는 변수입니다 

int a = 10;       // int형 변수 a 선언
int *p = &a;      // int형 포인터 p는 a의 주소로 선언

*p += 5;       // a = a + 5와 동일

int *p = &a

  • & 연산자는 변수 a의 주소를 나타냅니다.
  • p는 a의 주소가 저장된 포인터 변수입니다
  • *p는 포인터 p가 가리키는 주소에 저장된 값, 즉 a의 값인 10을 의미합니다
  • *p += 5; 는 포인터 p가 가리키는 변수 a의 값을 5 증가시킵니다

배열과 포인터

배열의 이름은 그 값을 변경할 수 없는 상수라는 점을 제외하면 포인터와 같습니다
따라서 배열의 이름은 포인터 상수(constant pointer)입니다.

int *p, a[4]={10, 20, 30, 40}; 	// int형 배열 a, 포인터 p 선언
printf("%d %d %d %d\n", a[0], a[1], a[2], a[3]); 	// 배열 요소 출력 (index)

p=a;
printf("%d %d %d %d\n", *p, *(p+1), p[2], *(p+3)); 	// 배열 요소 출력 (pointer)

p=a, 배열 이름 a는 a[0]의 주소값을 가리킨다

  • 배열의 이름은 첫 번째 요소의 주소로 해석됩니다. 이는 포인터 상수이며, 값을 변경할 수 없습니다
  • p = a;에서 p는 배열 a의 첫 번째 요소인 a[0]의 주소를 가리킵니다
  • 포인터를 사용하여 배열의 요소에 접근할 수 있습니다. *(p+1)은 a[1]의 값을 의미합니다
  • 배열과 포인터는 밀접한 관련이 있으며, 포인터를 사용하여 배열의 요소에 효율적으로 접근할 수 있습니다

문자열과 포인터

문자열은 문자의 배열로 표현됩니다
문자열을 나타내는 포인터는 배열의 이름과 마찬가지로 해당 문자열의 첫 번째 문자의 주소를 가리킵니다

char *p = "Hello"; 	// 문자열을 가리키는 포인터 p
char m[]= "world";	// 문자열을 저장할 배열 m[6] = {'w', 'o', 'r', 'l', 'd', '\0'}

printf("%s %s\n", p, m); 
p = m; 	// hello 문자열을 가리키는 포인터 p = 배열 m의 첫 번째 주소
printf("%s\n", p);

while (*p) 	// p가 가리키는 문자가 '\0'이 아닐 때까지 반복
	putchar(*p++);
printf("\n");

p=m, 문자열 이름 m은 m[0]의 주소를 가리킨다

  • char *p = "Hello" 에서 p는 문자열 "Hello"의 첫 번째 문자인 'H'의 주소를 가리킵니다
  • 문자열을 가리키는 포인터를 다른 문자열로 변경할 수 있습니다. p = m;에서 m은 문자 배열을 가리키는 포인터이며, 문자열 "world"의 첫 번째 문자 'w'의 주소를 가리킵니다.
  • while (*p)는 포인터 p가 가리키는 위치의 문자가 널 종료 문자('\0')가 아닌 경우에만 반복합니다. 이를 통해 문자열의 끝까지 순차적으로 문자를 출력합니다
  • putchar() 함수는 한 문자를 표준 출력에 출력하는 함수입니다. *p++는 포인터 p가 현재 가리키는 문자를 출력한 후에 포인터를 다음 문자로 이동시킵니다

https://www.tcpschool.com/c/c_pointerArray_relation

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

  1. 변수는 컴퓨터 메모리에 저장
  2. 포인터(Pointer) 
  3. 배열과 포인터
  4. 문자열과 포인터
'Dev' 카테고리의 다른 글
  • 말썽쟁이 이클립스 오류해결 모음
  • 코딩 테스트에서 자주 쓰는 입력방식에 대하여
  • 수 자료형 - 정수형, 실수형
  • max, min 없이 리스트의 최댓값, 최솟값 구하기
너굴먹
너굴먹
해랑사 을신당는 나
  • 너굴먹
    햄스터가 갱스터가 될때까지
    너굴먹
  • 전체
    오늘
    어제
    • 분류 전체보기 (39) N
      • Dev (20)
      • Computer (6)
      • Project (7) N
      • CodingTest (2)
      • 일상 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Lightsail
    아이패드 m4
    RS래치
    코딩테스트
    python #max #min #최댓값 #최솟값
    정보처리기사
    vercel
    trunk-based
    cbt
    2진수
    YOLOv5
    실수 변환
    c라이브러리
    actions secrets and variables
    오답노트
    roboflow
    래치
    플립플롭
    python
    경기도갭이어프로그램
    R-S래치
    숫 자료형
    GithubAction
    flask
    파이썬
    10진수
    소수 변환
    필기
    숫자 자료형
    AWS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
너굴먹
포인터와 배열(Pointer & Array)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.