C에서는 배열이 실제로는 존재하지 않죠... 그리고 값 전달에 있어서도 사실상
Call by Value 밖에 되지 않는걸루 알고 있습니다.
포인터도 사실상 값을 넘긴다는 의미겠죠.. 그게 주소값을 넘겨서 참조 하느냐..
하는 문제일 거라 생각합니다.. 질문의 내용과는 좀 동떨어진 내용일지도..
Call by Value, Reference, Address 다 지원하는건 C++이죠...
C에서 배열 자체가 포인터로 구현 되었기에.. 포인터 말고는 방법 없죠..
컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러
너무 과장하신 표현 같습니다. B 나 BCPL 에서는 참일 수 있지만, C 언어에
는 배열과 포인터가 각각 다른 특성을 가지고 존재합니다. 다만, "배열에
대한 접근이 포인터 연산으로 정의되어 있다" 는 사실입니다. 이와 같은 사
실로 "C 언어에서 배열과 포인터는 사실상 같다" 라고 말하는 것은 배열과
포인터의 차이를 고려하지 않은 지나친 확대 해석입니다.
배열은 포인터나 참조형이나 결과적으로 같은데요?func(int *
배열은 포인터나 참조형이나 결과적으로 같은데요?
func(int *a);
나
fun(int a[])
나...
C에서는요
배열 자체가 포인터의 연속이죠 따라서
포인터로 넘기는 방법이외에는 방법이 없습니다
메모리 구조를 좀 공부하시면 전혀 엉뚱한 질문이라는것을 아시게
될겁니다
한마디로
배열은 포인터을 사용해서 참조합니다
승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스
Re: 일차원 배열을 참조로 함수로 넘 길수 있는 방법이 존재하는
C언어에는 참조형(reference type)이 없으니 참조에 의한 함수호출은 원천적으로 불가능하구요....
C++의 경우라면 array대신에 vector나 string을 이용하시면 call by reference가 가능합니다..
C에서 사실상 배열이란건 없다는 사실이..
C에서는 배열이 실제로는 존재하지 않죠... 그리고 값 전달에 있어서도 사실상
Call by Value 밖에 되지 않는걸루 알고 있습니다.
포인터도 사실상 값을 넘긴다는 의미겠죠.. 그게 주소값을 넘겨서 참조 하느냐..
하는 문제일 거라 생각합니다.. 질문의 내용과는 좀 동떨어진 내용일지도..
Call by Value, Reference, Address 다 지원하는건 C++이죠...
C에서 배열 자체가 포인터로 구현 되었기에.. 포인터 말고는 방법 없죠..
컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러
포인터도 call by value 로 넘어가는것으로 알고 있습니다
c 는 call by value 만 지원하지 않나요?
포인터를 넘기면 포인터 자체가 넘어가는게 아니라 포인터의 복사본(?)이 넘어가는 것으로 알고있습니다.
결과적으로 call by reference 효과를 내기는 하지만 call by value 라고 알고 있습니다.
Call by referenece 효과인가요??
제가 알기론 C에서 포인터를 이용해서 Call by Address를 흉내내는 걸루
알고 있었는데.. 사실상 Address건 Reference건 결과야 뭐 같다고 봐도..
내부적으로 Reference는 주소값에 직접 쓰니가 보안상 취약점이 있겠네요..
컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러
Re: C에서 사실상 배열이란건 없다는 사실이..
너무 과장하신 표현 같습니다. B 나 BCPL 에서는 참일 수 있지만, C 언어에
는 배열과 포인터가 각각 다른 특성을 가지고 존재합니다. 다만, "배열에
대한 접근이 포인터 연산으로 정의되어 있다" 는 사실입니다. 이와 같은 사
실로 "C 언어에서 배열과 포인터는 사실상 같다" 라고 말하는 것은 배열과
포인터의 차이를 고려하지 않은 지나친 확대 해석입니다.
--
Jun, Woong (woong at gmail.com)
http://www.woong.org
댓글 달기