메모리 접근2 [C언어] 포인터가 가리키는 메모리를 참조하는 * 연산자 예제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include int main(void) { int num1 = 100, num2 = 100; // 변수 num1과 num2를 선언하고 각각 100으로 초기화 int * ptr; // 포인터 변수 ptr을 선언 ptr = &num1; // 포인터 ptr이 num1을 가리키게 함 (*ptr) += 20; // num1 += 20 과 동일 ptr = &num2; // 포인터 ptr이 num2를 가리키게 함 (*ptr) -= 20; // num2 -= 20과 동일 return 0; } Colored by Color Scripter cs 이 소스코드에서 num1은 100에서 20이 증가된 120으로 다시 저장되고, num2는.. 2020. 8. 10. [C언어] 포인터 변수에 있어 자료형의 의미 2 1 2 3 4 5 6 7 8 9 10 11 12 #include int main() { double num2 = 3.14; int * ptr2 = &num2; *ptr2 = 10; } cs 여기에서 변수 num2가 더블형인데, num2를 가리키는 포인터 변수 자료형을 int라고 설정해놓으면, 포인터는 자기가 가리키는 변수가 원래 더블형이라 8바이트 임에도, 정수형으로 인식하여 4바이트로 num2 변수에 데이터 값 10을 메모리에 다시 저장하게 된다. 그러면 8바이트 짜리로 메모리에 저장되어 있던 값에 정수형 4바이트 짜리로 저장하게 되니(4바이트 짜리로 알고 메모리에 접근하게 되니) 앞의 4바이트는 10이라는 정수값이 채워지고, 기존의 8바이트 짜리 메모리의 뒤 4바이트는 3.14의 흔적이 남아있게 된다.. 2020. 8. 9. 이전 1 다음