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.주소값을 보냈을 때는 변수가 변할수도 있으니 하나하나 확인해줘야 한다.

 

 

 

 

 

 

 

*퀴즈 풀어보기*

 

 

'언어 > C' 카테고리의 다른 글

4.3 파일입출력  (0) 2017.04.04
3.31 구조체  (0) 2017.04.03

+ Recent posts