대신 *p 처럼 주소가 가리키는곳의 내용 연산을 지원해주고, 정수와 덧셈 뺄셈시 단위 크기씩 더해지고 빼지는 연산 기능이 추가됨.
mozzart(mozzart)2016-05-21 22:25
그래서 난 *p 라는 표현에서의 단항연산 * 를 content of~ ( ~~ 의 내용 ) 이라고 읽지유.
mozzart(mozzart)2016-05-21 22:26
오... 그렇게하니깐 쉽게 되네요!!
dd(112.109)2016-05-21 22:27
~~~의 내용 샤샤샤
dd(112.109)2016-05-21 22:27
님 천재인듯!
dd(112.109)2016-05-21 22:28
함수 스코프에서 벗어나면 변수에 값이 너가 원하는데로 조작되지 않거나 할 수 있음. 주소를 찾아가서 값을 바꾼다는 건 너가 만든 함수의 스코프하고는 상관없이 메모리라는 근원적인 곳에 접근해서 값을 갖고오고 수정하고 한다는 거임. 그래서 포인터를 쓰는건데, 이것도 포인터 좀 이해하다보면 알게 될거임.
아아아앙(118.223)2016-05-21 22:29
변수를 설정하면 자동으로 컴퓨터에서 메모리를 자동적으로 할당하는데 그 할당하는 주소를 설정해줘서 그값을 사용자가 원할때 수정할수있게 해준다는 거죠.....?
dd(112.109)2016-05-21 22:31
아아아앙의 이야긴 함수 호출시 파라메터 전달 방식인 call by value 를 이야기 하는거야.
mozzart(mozzart)2016-05-21 22:35
call by value 의 한계를 넘기 위해선 주소를 전달해주거나 ( scanf 에서 &var; 하듯 ) 레퍼런스로 선언되어야 한다는걸 이야기 하는거.
mozzart(mozzart)2016-05-21 22:37
주소를 '설정' 해주는건아니고 주소가어딘지 적어놓은걸 가지고 그주소값을 참고하거나 수정하고나 하는거임 - dc App
흐린바다(1214qwer)2016-05-21 22:37
그냥 아주 간단한 예 하나만 들자면, sum(int a) {a = a+1;} 이라는 함수가 있다고 쳐. 그리고 너가 선언해 둔 int b=5; 라는 변수가 있고, 이 변수로 sum(b) 이렇게 함수를 호출한다고 해봐. 그러면 이 b는 어떤 값을 갖겠냐. 1 더해지지 않고 그대로 5겠지. 근데 파라미터로 b의 주소값을 갖고 있는 *p를 넣어서 더하기 1을 하면 b의 값이 6으로 변하는거야. 뭐 대충 이런 이유로 포인터 씀.
아아아앙(118.223)2016-05-21 22:38
포인터뱨우고 뒤에서 참조자연산에대해서도 나올텐데 일단은 좀 진도빼고 다시보셈ㅋㅋㅋ 1회독에 다볼생각하지말고 - dc App
흐린바다(1214qwer)2016-05-21 22:38
call-by-address 의 좋은 예는 swap( a, b ); 인듯.
mozzart(mozzart)2016-05-21 22:40
아아아앙의 예는 sum 이 아니라 함수이름을 inc 같은걸로 지어야할것 같음.
mozzart(mozzart)2016-05-21 22:40
call by value와 call ref의 예기는 swap함수 만드는거 하면서 이해하면됨. 그때 포인터하고 참조연산도 활용하면서 총정리할수있으니 일단은 포인터진도빼고 뒤에서나오는 이부분하면서 정리하셈 - dc App
보내드렸습니다
응 대략 그런거임. 계속 프로그래밍 하고 하다보면 확실하게 이해 될거임.
p <- 변수. 그냥 변수. 다른 변수처럼 값을 보관 가능.
근데 이렇게 할바엔 바로 i값을 수정해주는게 편한거 아닌가요?
대신 *p 처럼 주소가 가리키는곳의 내용 연산을 지원해주고, 정수와 덧셈 뺄셈시 단위 크기씩 더해지고 빼지는 연산 기능이 추가됨.
그래서 난 *p 라는 표현에서의 단항연산 * 를 content of~ ( ~~ 의 내용 ) 이라고 읽지유.
오... 그렇게하니깐 쉽게 되네요!!
~~~의 내용 샤샤샤
님 천재인듯!
함수 스코프에서 벗어나면 변수에 값이 너가 원하는데로 조작되지 않거나 할 수 있음. 주소를 찾아가서 값을 바꾼다는 건 너가 만든 함수의 스코프하고는 상관없이 메모리라는 근원적인 곳에 접근해서 값을 갖고오고 수정하고 한다는 거임. 그래서 포인터를 쓰는건데, 이것도 포인터 좀 이해하다보면 알게 될거임.
변수를 설정하면 자동으로 컴퓨터에서 메모리를 자동적으로 할당하는데 그 할당하는 주소를 설정해줘서 그값을 사용자가 원할때 수정할수있게 해준다는 거죠.....?
아아아앙의 이야긴 함수 호출시 파라메터 전달 방식인 call by value 를 이야기 하는거야.
call by value 의 한계를 넘기 위해선 주소를 전달해주거나 ( scanf 에서 &var; 하듯 ) 레퍼런스로 선언되어야 한다는걸 이야기 하는거.
주소를 '설정' 해주는건아니고 주소가어딘지 적어놓은걸 가지고 그주소값을 참고하거나 수정하고나 하는거임 - dc App
그냥 아주 간단한 예 하나만 들자면, sum(int a) {a = a+1;} 이라는 함수가 있다고 쳐. 그리고 너가 선언해 둔 int b=5; 라는 변수가 있고, 이 변수로 sum(b) 이렇게 함수를 호출한다고 해봐. 그러면 이 b는 어떤 값을 갖겠냐. 1 더해지지 않고 그대로 5겠지. 근데 파라미터로 b의 주소값을 갖고 있는 *p를 넣어서 더하기 1을 하면 b의 값이 6으로 변하는거야. 뭐 대충 이런 이유로 포인터 씀.
포인터뱨우고 뒤에서 참조자연산에대해서도 나올텐데 일단은 좀 진도빼고 다시보셈ㅋㅋㅋ 1회독에 다볼생각하지말고 - dc App
call-by-address 의 좋은 예는 swap( a, b ); 인듯.
아아아앙의 예는 sum 이 아니라 함수이름을 inc 같은걸로 지어야할것 같음.
call by value와 call ref의 예기는 swap함수 만드는거 하면서 이해하면됨. 그때 포인터하고 참조연산도 활용하면서 총정리할수있으니 일단은 포인터진도빼고 뒤에서나오는 이부분하면서 정리하셈 - dc App
아... 그런 혁명이 ㄷㄷㄷㄷㄷ
얘기 - dc App
다들 너무 감사합니다 (__)