포인터 변수와 %p주소 형식 지정자 with 배열
보기 전에 알아야 할 것 !
먼저 포인터를 사용하기 위한 기호들을 알아보자.
포인터를 사용하기위해 쓰는 기호는 두가지가 존재한다.
* 와 & 이다.
먼저 *
*
위의 기호는 애스터리스크라고 하며,
포인터 변수를 선언할 때와 포인터 변수를 사용할 때 쓴다.
&
위의 기호는 앤퍼샌드 라고 하며 , 변수의 주소를 활용해야 할 때 사용한다.
** 자료형을 잘 이해하고 있다면 이해하기 조금 더 쉬울 수 있다.
자료형의 종류 : https://jostch.tistory.com/160
C 언어) 자료형의 종류
자료형이란? 모든 자료들의 형식을 정하는 것. 자세히 말하자면 자료형은 메모리에서 어떤 종류의 데이터인지 알려주는 일종의 장치이다. 보기전에 알아야 할 것! 컴퓨터의 부호 표현 방법 사람
jostch.tistory.com
포인터 변수는 변수 앞에 * 을 붙여서 선언하게 되며
printf( “%d “, *A ) 로 A 가 포인팅 하는 것의 내용을 출력하는 것이 가능하다.
아래의 설명은 코드를 보면서 이해하자.
결과값-
일반적인 변수처럼 x=1 이런식으로 값을 초기화 하거나, 넣어주는 것은 항상 *A=&b 로 특정 변수의 주솟값으로만 초기화가 가능하다.
만약 *A 는 표지판 같은 역할로, 선언을 하게 되면 A 라는 이름의 방향표지판을 꽂는다는 느낌으로 알아두면 된다.
!! A라는 주소가 담긴 표지판이 생성 되는 것이므로, A를 가르키는 것은 아니다.
// 이 부분은 내가 제일 헷갈렸던 부분이다.
*A=&B 와 같은 코드는 처음 생성한 A는 값이 없으므로 A가 가르키는 방향을 B로 재지정 해 주는 것이다.
A 표지판이 가르키는 *방향은 B 주소로 가는 방향이야~
그래서 만약 *A를 출력한다고 했을 때, *A에 적힌 주소인 B 의 주소를 찾아가서 출력하게 된다.
결론적으로 , B의 값이 출력된다.
포인터 배열 char * 변수명[]
배열 0 , 1 , 2 … 에 각각의 주소를 포인팅해주는 배열 포인터는
B[0] 이라는 배열이 변수와 똑같은 역할을 하듯
*A 포인터 변수와 똑같이
*B[0] , *B[1] , ….이 생기는 것이라고 생각하면 된다.
B[0] 로 가는 방향 , B[1] 로 가는 방향
정리-
A= 주소가 적혀있는 표지판.
*A= A에 적혀있는 주소로 가라.
A에 들은 값 : B의 주솟값
- A는 처음부터 포인터 변수로 선언을 했으니 형식은 %p 를 써야한다.
- *A는 A의 주소로 가라는 뜻이므로 해당 주소의 자료형 즉, B의 자료형에 맞춰 쓰면된다.
- 포인터 배열도 *A 포인터 변수와 똑같이 *B[0] , *B[1] , ….이 생기는 것이라고 생각하면 된다.
틀리다고 생각하는 점은 말씀 해 주시면 감사하겠습니다~