1. 포인터1복습
2. 포인터변수명에 상수 더하기
3. 배열과포인터
4. 주소전달방식
5. 퀴즈
1.
1) 포인터 선언과 초기화 , 역참조
역참조 (*포인터명) 포인터가 가지고 있는 주소값으로 가 그 공간안에 들어있는 값을 가져온다.
2)포인터 크기
32비트 체계에서는 모든 포인터의 크기가 4byte 이다 (64비트 체계에서는 8비트)
2. 포인터변수에 상수 더하기(포인터변수명 + n)
: (포인터에 저장된 주소값 + 자료형크기 * n)
** int : 4byte , double : 8byte , float : 4byte , char : 1byte
3. 포인터와 배열
1)배열명은 배열이 시작하는 시점의 주소를 갖고있는 상수이다.
-선언과 초기화 방법
2)1차배열의 경우 *(포인터명 + 원소번호), 포인터명[원소번소]로 값에 접근할 수 있다
(가정 : 배열은 주소 100부터 시작하고 포인터P=a; 과정을 마친상태)
P(100) P+1(104) P+2(108) P+3(112) P+4(116) --주소
*P *(P+1) *(P+2) *(P+3) *(P+4) --포인터
a[0] a[1] a[2] a[3] a[4] --배열
10 20 30 40 50
P=a , P+i = a+i , *(p+i)=*(a+i) , P[i]=a[i]
(첫번째 printf문이 중요)
++)scanf_s에서의 주소입력에서의 포인터 사용
3)포인터배열
(pta의 시작주소가 100이라고 가정, a, b, c의 주소가 순서대로 들어있다고 가정)
pta+0 -100 : pta[0]의 주소(배열명은 다 주소)
*(pta+0) -pta[0] - a의 주소 : pta+0이라는 주소에 들어있는 값 : pta[0]=&a
*(*(pta+0)) -*pta[0]-*a의주소-a : pta[0]이라는 주소에 들어있는 값=a
4. 주소전달방법(함수에서 이용): 참조에 의한 전달 -call by reference *포인터이용
-호출함수의 변수 주소를 넘겨주는 방식이다
-호출함수의 변수에 영향을 줄 수 있다
-여러개의 결과값을 호출함수로 돌려주는 효과가 있다 (원래 리턴은 한개만 할수 있음 )
**일반적인 전달 방식 : 값에 의한 전달 = call by value
-호출함수의 변수값을 복사해서 전달하는 방식
-호출함수의 변수에는 아무런 영향을 주지 않는다
1.인자값으로 주소넘겨주는 외부함수 안에서 메인함수 안의 그 주소값에 해당하는 변수를 이용할 수 있다
2.주소값을 보냈을 때는 변수가 변할수도 있으니 하나하나 확인해줘야 한다.
*퀴즈 풀어보기*