일차원 배열을 참조로 함수로 넘 길수 있는 방법이 존재하는지영

skylandi의 이미지

일차원 배열을 만들어서 참조로 함수로 넘길수 있는 방법이 존재하는 지 궁금합니다. 포인터 제외...

답변에 감사 드립니다.

cdpark의 이미지

배열은 포인터나 참조형이나 결과적으로 같은데요?

func(int *a);

fun(int a[])
나...

mastercho의 이미지

배열 자체가 포인터의 연속이죠 따라서

포인터로 넘기는 방법이외에는 방법이 없습니다

메모리 구조를 좀 공부하시면 전혀 엉뚱한 질문이라는것을 아시게

될겁니다

한마디로

배열은 포인터을 사용해서 참조합니다

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

지나가는이의 이미지

skylandi wrote:
일차원 배열을 만들어서 참조로 함수로 넘길수 있는 방법이 존재하는 지 궁금합니다. 포인터 제외...

답변에 감사 드립니다.

C언어에는 참조형(reference type)이 없으니 참조에 의한 함수호출은 원천적으로 불가능하구요....
C++의 경우라면 array대신에 vector나 string을 이용하시면 call by reference가 가능합니다..

shs0917의 이미지

C에서는 배열이 실제로는 존재하지 않죠... 그리고 값 전달에 있어서도 사실상
Call by Value 밖에 되지 않는걸루 알고 있습니다.
포인터도 사실상 값을 넘긴다는 의미겠죠.. 그게 주소값을 넘겨서 참조 하느냐..
하는 문제일 거라 생각합니다.. 질문의 내용과는 좀 동떨어진 내용일지도..
Call by Value, Reference, Address 다 지원하는건 C++이죠...
C에서 배열 자체가 포인터로 구현 되었기에.. 포인터 말고는 방법 없죠..

컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러

garuna의 이미지

c 는 call by value 만 지원하지 않나요?

포인터를 넘기면 포인터 자체가 넘어가는게 아니라 포인터의 복사본(?)이 넘어가는 것으로 알고있습니다.

결과적으로 call by reference 효과를 내기는 하지만 call by value 라고 알고 있습니다.

shs0917의 이미지

제가 알기론 C에서 포인터를 이용해서 Call by Address를 흉내내는 걸루
알고 있었는데.. 사실상 Address건 Reference건 결과야 뭐 같다고 봐도..
내부적으로 Reference는 주소값에 직접 쓰니가 보안상 취약점이 있겠네요..

컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러

전웅의 이미지

shs0917 wrote:
C에서는 배열이 실제로는 존재하지 않죠...

너무 과장하신 표현 같습니다. B 나 BCPL 에서는 참일 수 있지만, C 언어에
는 배열과 포인터가 각각 다른 특성을 가지고 존재합니다. 다만, "배열에
대한 접근이 포인터 연산으로 정의되어 있다" 는 사실입니다. 이와 같은 사
실로 "C 언어에서 배열과 포인터는 사실상 같다" 라고 말하는 것은 배열과
포인터의 차이를 고려하지 않은 지나친 확대 해석입니다.

--
Jun, Woong (woong at gmail.com)
http://www.woong.org

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.