참조변수가 c++ 문법인가요? c문법인가요?

shamlock의 이미지


면접을 보는데 교수님이
c문법중에 참조변수와 포인터의 차이를 말하라고 해서
전 참조변수는 c++문법이지 c 문법이 아니라고 말씀드렸는데

아마도 교수님이 visual c++에서 코딩하다가 착각하신거 같은데
제말이 맞지 않나요?

바라미의 이미지

int &temp;
int *temp;

이 둘의 차이는 하나는 페러런스 변수고 하나는 포인터 변수인데..
위의 레퍼런스 변수는... C++에서만 가능한 것인건 맞습니다.

다만 기존 변수의 주소값을 취할 때 쓰는 변수명 앞의 &는 C++,C 둘다 되죠..

PS. 아아.. 제가 글 논지를 잘못 읽었네요.. 아무래도 교수님께서 착각하시거나 아니면 C++ 이건 C건 상관 없이 레퍼런스랑 포인터의 차이점을 말하라는 거겠죠.;;

Hyun의 이미지

여러가지 대답을 듣기 위한 교수님의 술책이 아닐까요?

kyh1026의 이미지

참조변수는 C++문법이 맞습니다. &는 C++에서 레퍼런스변수로 사용이 가능하고

또 윗분말씀처럼 주소값을 취할때 사용하기도 하기때문에 똑같은 녀석이 여기에서 쓰일때와 저기에서 쓰일때 다르기때문에

일종의 다형성의 성격을 가지고 있기도하죠 ^^

kakakwon의 이미지

방금전 등록했으며 다음의 답변이 KLDP의 첫 등록글이 되겠군요.

&와 *는 C Language에서 쓰이는 legal unary operator입니다. 다음을 예제로 보겠습니다.

/**************************
int a = 3;
int *b;
b = &a;

**************************/

b는 pointer variable입니다. &는 reference operator인데 variable앞에 쓰이면 그 variable의 value가 아니라 memory address가 compiler에게 참조됩니다. 그러므로 "b = &a" statement로 인해서 pointer variable인 b는 a의 address를 가지게 됩니다. 나중에 b의 값을 dereferencing하게 되면 3이 읽혀집니다.

다음과 같은 실험을 해보세요.
/*************************
int a;
int b = (int)&a;
*************************/

What is the output value of b?

도움이 되었으면 합니다.

Darkcircle의 이미지

지금 글쓴분께서 말씀하시는 "참조변수"라는건...

int b=3;
int *a=&b;
이런 경우가 아니라...

int &b; //이렇게 하면 에러뜹니다. 왜그럴까요?
이런 경우를 말하는 것입니다.
C++ 책을 보시는게....
---------------------------------------------------------------
실수하지 말아야 하는데 . . . Orz

---------------------------------------------------------------
폐인이 되자 (/ㅂ/)

grassman의 이미지

c에는 참조변수의 개념이 없습니다. c에서 모든 참조는 포인터로 수행합니다.
그리고 c에서 포인터의 참조 연산이 있습니다만... 이건 포인터 연산자의 개념일 뿐
변수 선언 자체를 참조 변수로 선언하는 것과는 다릅니다.

교수님의 질문 의도는 함정을 파둔 것이거나 아니면 말실수였거나 둘 중의 하나일겁니다.
말실수였다면 그걸 물고 늘어졌을 때 표정이 바뀌겠죠.
(권위에 대한 도전으로 받아들여서 감점될 수도 있습니다 ^^)

shamlock의 이미지

어느 회사의 면접인데 대학교수3분을 초빙해서 보더군요..흠..

c언어 관련 질문을 두개하더군요
1. c언어에서 참조변수와 포인터의 차이를 말하라
2. c언어에서 merge operator를 설명해봐라

첫질문의 답 : c언어에서는 참조변수라는게 없습니다.
교수님 : 있어.
저 : 네..정말 없지만 있다 치고 말씀드리겠습니다.
참조변수는 변수나 객체에 대한 alias개념이고 포인터는 변수나 객체의
메모리 주소를 변수에 저장하는 개념입니다.
(갈릴레오가 그래도 지구는 둥글다고 한말을 생각하며 잠시 망상에 빠짐)

교수님 : 참조변수 있다니까.. 공부좀 더해

두번째 질문 :
저 : 그게 어떤 개념인지 힌트좀 주십시요
교수님 : 공부좀 더해야겠어..

알고보니 merge operator는 샵샵(##)이더군요,,,

다른 교수 질문은 다 대답했는데.. 제일 자신있는 C언어는 하나도 대답못했네요

..결국 떨어졌습니다... 쩝

@.@

hongminhee의 이미지

정말 궁금해서 그러는데, 저런 교수가 많나요? (아직 대학 진학 안 한 사람이라 잘 몰라요.)

neogeo의 이미지

어차피 교수님들은 코딩 안하시는 분도 꽤 되니까요.

용어가 실질적으로 필드에서 어떻게 쓰이나 이런것도 잘 모르실 수 밖에 없죠.

책보고 논문보고 수업 준비하고 연구하고.. 이런것만 제대로 해도 충분히 훌륭한 교수님입니다.

다만 본인이 잘 못 알고 있을리가 없다 라고 늘 생각하며 권위로 항상 찍어누르는 일부 나쁜 교수가 있을 뿐이지요.

( 보통 사람은 배우면 배울 수록 자기가 모르는게 많다고 여기게 될 수 밖에 없기에 교수님들 대부분은 겸손하십니다. )

Neogeo - Future is Now.

Neogeo - Future is Now.

klyx의 이미지

그렇게 자신만만하게 있다고 하는 교수가 대체 누군지 정말 궁금하네요.
회사명이나 교수이름 공개할수는 없나요...?
대체 C의 '참조변수'가 무언지 직접 찾아가서라도 물어보고 싶네요.

vamf12의 이미지

참조 변수는 사람이 살다보면... 그렇다 쳐도... ##은 좀... -_-

klyx의 이미지

##은 정식명칭이 뭔진 몰라도 merge operator라고도 합니다.
좀더 친절하게 적자면 token merge operator라고하지만...

ymir의 이미지

보통 token-pasting (또는 token-concatenation) operator 가 더 많이 쓰이는것 같네요.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

grassman의 이미지

저걸 저렇게 부른다는 건 이 쓰레드에서 처음 알았습니다.

mauri의 이미지

그렇게 당당하게 말을 하셨다니, 왠지..

"헉! 지금까지 내가 잘못알고 있었던 것은 아닌가?" 싶을 정도로군요..;;

궁금하네요.

grassman의 이미지

C++에는 참조 형(reference type)에 대한 정의가 있지만 C에는 참조 형에 대한 내용이 전혀 안나옵니다.
당연히 형이 없으므로 변수를 선언할 수도 없고요. (포인터로 참조한다는 얘기와는 다른 얘기입니다)

당당하게 말씀하신 교수님이 무슨 생각을 하고 있었는지는 알 길이 없군요.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.