날아라쩡글이의 블로그입니다.

c언어 관련 정리 본문

하루 story/프로젝트

c언어 관련 정리

날아라쩡글이 2026. 1. 10. 06:51
728x90
반응형

포인터 (*)
- 메모리의 위치를 표현한 기호
- 주소를 표현한 변수 > 포인터 변수로 명칭
int *a; //포인터 변수이다. 주소 값을 가지고 있다고 선언
*a = 10; // a의 값이다. 주소의 값에다가 10을 넣어라
a의 실 주소 값에 10을 넣어라.

printf시 a, *a 라면? 100, 10
>a 는 주소의 값을 출력, *a는 주소의 들어간 값

-변수의 주소 찾기
int b = 10; // 일반 변수 102공간에 10을 넣음
int *a; // 포인터 변수를 선언한다
a = &b; // &는 주소값을 의미한다
// a라는 200주소에 102공간의 값을 넣는다
printf시 *a, b라면?
// b와 a는 102를 가르킨다.
그럼 102의 값인 10, 10을 출력한다
// a의 주소값이 가르키는 값

- scanf 와 변수
사용자 system.out.print 와 동일한 기능을 가지고 있는 사용자가 입력한 값을 변수에 담는 함수
int a; scanf("%d",&a);
사용자가 입력한 변수의 값을 a의 주소에 입력한다.

- 배열과 포인터
둘다 주소의 값을 가진다.
배열은 연속성을 가진다고 생각하고 진행
포인터에 배열과 동일한 주소값을 가질 수 있다.

int a[4]={10,20,30}; // a는 주소 100을 가짐
int *p = a; //주소 값에 a의 주소 100을 넣는다
p++; // p의 주소값을 101로 변경
*p++=100;// p를 가르키는 값에 (주소 101에 ) 100을 넣고
후위니까 주소 값을 102로 변경한다.
*++p=200; // 주소 값을 +1 해서 103으로 변경 후 값을 200으로 변경한다.

int num[4] = {1,2,3,4}; // num은 주소 100 가짐
int *pt = num; // pt도 주소 100 가짐
pt ++; // 주소 101로 변경
*pt++ = 5; // 101의 값을 5로 변경 그리고 102로 변경
*pt++ = 10; // 102의 값을 10으로 변경 그리고 103으로 변경
pt --;// 102로 변경
*pt+++=20; // ++와 +=으로 이해할 것, 대입먼저 그리고 후위니까 102의 값에 20을 더하고 104로 변경

- 2차원 배열과 포인터
대표행의 값을 가지고 있다.
int a[3][2] = {{1,2,3},{4,5,6},{7,8,9}};
//a는 100의 주소값을 가지고 있다
// a[0] a[1] a[2]의 값은 100, 102, 104의 주소값

int i [][3]; //앞에 상관없이 3개씩 자르겠다


반응형
Comments