Declan Andrew
Kaminion
Declan Andrew
전체 방문자
오늘
어제
  • 분류 전체보기 (83)
    • 잡담 (1)
    • AI (0)
      • 논문 리뷰 (0)
    • 유니티 (1)
    • C (2)
    • Java (11)
    • 서버(Server) (10)
      • PHP (1)
      • DevOps (4)
    • JavaScript (12)
      • Node.js (1)
      • React.js (6)
    • 프론트엔드 (1)
    • 안드로이드 (2)
    • 알고리즘과 자료구조 (2)
    • 통계 (0)
      • 중학 통계 (0)
      • 고등 통계 (0)
      • 대학 통계 (0)
    • 컴퓨터과학 (19)
      • 디지털 논리회로 (6)
      • 인공지능 (3)
      • 데이터베이스 (3)
      • 정보통신망(네트워크) (4)
      • 프로그래밍 언어론 (0)
      • 운영체제 (3)
    • 수학 (8)
      • 기초 수학 (5)
      • 공학 수학 (3)
      • 게임 수학 (0)
    • 자격증 (12)
      • AWS (3)
      • 정보처리기사 (9)
    • 빅데이터 (1)
      • 이론 (0)
      • 실습 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기
  • 티스토리로이동

공지사항

인기 글

태그

  • 인공지능
  • 자격증
  • 데이터베이스
  • array
  • 기사
  • 정처기
  • 정보처리기사
  • Ai
  • 수학
  • js
  • Database
  • react-native
  • 자바
  • 논리회로
  • Programming
  • qnet
  • 프로그래밍
  • 파이썬
  • 자바스크립트
  • Q-net
  • DB
  • 프로그래머
  • React
  • 리액트
  • 리눅스
  • JavaScript
  • java
  • 개발
  • 큐넷
  • OS

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Declan Andrew

Kaminion

C

Pointer(포인터)의 간단한 개념

2019. 3. 15. 21:25
반응형

변수는 그 자체로 자신의 자료형에 맞는 값을 저장했다.

포인터 변수형은 메모리 주소를 저장한다.


ex ) int형 포인터(int *)는 int 변수값의 위치값을 저장한다고 생각하면 된다.


포인터 - 특정한 변수 자체가 존재하는 메모리 주소값을 가진다

ex) int*a = &변수명; (주소값을 담는과정)

정의부에서 사용하는 *은 '주소의 값'을 의미함.


&는 포인터에서 주소를 가져올 때 사용 ( 주소연산자 )

포인터 (*) - 포인터를 선언할 때 사용 ( 선언부 )

간접참조 연산자(*) - 선언된 포인터 변수가 가리키는 변수를 구함 ( 정의부 ) 


포인터는 다중으로도 사용 가능하다.

포인터의 포인터가 존재 할 수 있다!


#include <stdio.h>

int main(void)

{

int a = 5;

int *b = &a;

int **c = &b;

printf("%d \n", **c);

return 0;

}

출력값 : 5



* 는 차원수를 의미하며 *가 하나 씩 늘어날 때마다 *수가 하나 적은 것을 담을 수 있다.

예를 들자면,

int* 는 int를 담을 수 있다.

int**는 int*를 담을 수 있다.

int* 자료형은 int의 주소를 담는 자료형이다.



배열의 이름은 배열 주소값 자체를 가지고있다.

int a[] = {1,2,3,4,5};

int *b = a;

printf("%d\n", b[2]); 

출력값 3 

배열과 포인터는 상호 치환되어 사용이 가능하다.

(내부적으로 거의 동일하기 때문)

다만 차이점은 배열은 포인터 '상수'라는 점이다.


이것으로 배열 포인터, 포인터 배열이 무엇인지 잘 생각해보면 좋다.


포인터 배열 : 배열의 요소들이 포인터 인 것(포인터 변수들을 저장하는것)

int num1 = 10 , num2 =20 , num3 = 30;

int *arr[3] = {&num1, &num2, &num3};


배열 포인터 : 배열을 가리키는 포인터 (배열의 이름은 배열 주소값 자체를 가지고 있으니 비슷한 개념이다.)

  arr[2][3] = {{1,2,3},{4,5,6}};

 (int*)pArr[3] = arr; (이 경우에 배열과 똑같이 참조가능)



반응형

'C' 카테고리의 다른 글

변수와 메모리  (0) 2019.03.20
    'C' 카테고리의 다른 글
    • 변수와 메모리
    Declan Andrew
    Declan Andrew
    궁금한 점은 메일 주세요. jwsoft0529@gmail.com 블로그 확인 잘 안합니다.

    티스토리툴바