본문 바로가기
코스웨어/16년 스마트컨트롤러

20160405_김도관_업무일지_C언어기초_01

by 알 수 없는 사용자 2016. 4. 7.
728x90
반응형

포인터 


널포인터(Null Pointer)


쓰기전에 초기화 하는것이 좋음


잘못된 메모리 접근을 미연에 방지하기 위해 사용


Null = 0 을 의미






포인터와 배열



 ArrayNameType.c



결과 :



배열 처음 시작과 첫번째요소의 주소는 동일함

배열은 붙어져서 메모리 주소를 가짐





 ArrayNamePointerOperation.c




결과 :


8번  : 각각 배열 첫번째 요소를 출력

11번 : 더하고 난뒤 저장된 첫번째 요소 출력





 ArrayNameIsPointer.c



결과



배열주소로 호출하거나 직접 변수를 호출하거나 그위치에는 동일한 값이 저장되어있음








포인터 연산


 PointerOperationResult.c




결과 :



8과9번 : 주소 자체를 증가시킴

11번 : 주소 출력

15번 : 증가된 주소 출력


 PointerBaseArrayAccess.c


결과:


7번 : 배열의 순서 대로 하나씩 출력

9~18번 : 배열의 0번째 부터 2번째까지 출력후 다시 감소시키며 출력


 TwoStringType.c



결과:


컴파일은 가능하나 실행시 오류가 생김

컴파일러에 따라 컴파일 자체가 안되는경우도 있음

str2는 포인터이기에 정확히 연결을 해줘야 함 



윈도우 이상없음



메모리주소 출력시




포인터 비교



메모리 공간에 저장된후 값이 반환되므로

7번과 8번은 동일하게 나옴


castr의 배열에 저장된값 출력

배열의 경우 마지막에 null을 넣지 않으면 특수문자 \0 이 자동으로 붙음

그래서 castr[4]는 0을 넣음




주소에 값 대입




포인터변수에 값을 넣음으로써...

포인터의 "A = " 과 대입된 A의 값 100이 %d에 들어감으로써 

출력은 A = 100 이 됨 












포인터 배열


PointerArray.c



결과


포인터 배열에 각각 변수 주소를 넣어 할당한뒤 출력 




StringArray.c


결과:


배열포인터에 값을 넣고 하나씩 순서대로 출력












배열을 함수의 인자로 전달



ArrayParam.c




출력:


ShowArrayElem 함수 : 배열을 총갯수만큼 읽어들여서 하나씩 출력하고 한줄개행을 하는 함수











Call By Reference

레퍼런스 참조

포인터를 이용하여 값을 직접바꾸기 때문에...Call by Value와 달리 메인내부의 값을 변경할수 있음



코드



출력


메모리 주소에 직접 값을 변경하므로 

값에 의한 참조처럼 결과가 나타나지 않고...변경된 값이 출력됨

728x90