안녕하세요 C언어 초보인데요.. 프로그래밍을 하다보면 ptr* 처럼 포인터가 뒤에있는게 있고 *ptr 처럼 앞에 있는게 있는데 차이점이 뭔가요?
차이가 없습니다. 단지 스타일의 차이에요.
그런데 사람들 마다 의외로 자기의 스타일을 강조하는 경향이 있습니다.
그리고 C++의 경우는 type 바로 옆에 *를 붙이는게 의미적으로 자연스럽다고 생각하는 사람이 많습니다.
int* a = ...; MyClass const& b = ...;
하지만 여러 개의 포인터를 한 줄에 선언한다면 c++라도 다음처럼 해야겠죠..
int *a, *b, *c...
위의 답글은 문제를 잘 못읽고 쓴 겁니다. 무시해 주세요. 죄송합니다.
아닙니다..감사합니다
ptr* 의 예를 들어주세요.
말씀하신 ptr이 선언된 변수명인지 아니면 자료타입인지가 애매하네요.
암튼 둘 다 따져보면.
ptr이 변수명이라면.
int *ptr = NULL; // 평범한 선언문 *ptr = 100; // 평범한 할당문 void ptr* = // 이건 제가 알기론 불가능 ptr* // 이것도 불가능 (뭐.. 곱셈 연산이라면 캐스팅같은걸로 가능할 수도 있겠지만, 곱셈 연산자를 물으신건 아니죠?)
ptr이 타입이라면.
ptr* something = NULL; // 역시 평범한 선언문. *ptr something // 불가능
제가 알고 있는 것이 맞다면, 결국 *ptr이 쓰였다면 ptr을 변수로 보시면 될것 같고, ptr*를 보셨다면 ptr을 타입으로 보시면 될것 같습니다. 실제 코드를 읽을 때 헷갈일 일은 전혀 없겠지만요.
--
* 의미는 두가지가 있는것으로 알고 있습니다. 1. int *a; 같은 경우 주소값을 저장하는 변수라는 뜻과 2. *a=10 이 같은 경우는 주소 참조 연산자로 쓰여 값을 지정할수 있죠
그리고 a* 같은 경우는 주소와 관련되서는 쓰이지 않는 것으로 알고있습니다.
텍스트 포맷에 대한 자세한 정보
<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]
차이가 없습니다. 단지 스타일의 차이에요. 그런데
차이가 없습니다. 단지 스타일의 차이에요.
그런데 사람들 마다 의외로 자기의 스타일을 강조하는 경향이 있습니다.
그리고 C++의 경우는 type 바로 옆에 *를 붙이는게 의미적으로 자연스럽다고 생각하는 사람이 많습니다.
int* a = ...;
MyClass const& b = ...;
하지만 여러 개의 포인터를 한 줄에 선언한다면 c++라도 다음처럼 해야겠죠..
int *a, *b, *c...
위의 답글은 문제를 잘 못읽고 쓴 겁니다. 무시해
위의 답글은 문제를 잘 못읽고 쓴 겁니다. 무시해 주세요. 죄송합니다.
아닙니다..감사합니다
아닙니다..감사합니다
ptr* 의 예를 들어주세요.
ptr* 의 예를 들어주세요.
"ptr"이 뭘 의미하느냐에 따라..
말씀하신 ptr이 선언된 변수명인지 아니면 자료타입인지가 애매하네요.
암튼 둘 다 따져보면.
ptr이 변수명이라면.
int *ptr = NULL; // 평범한 선언문
*ptr = 100; // 평범한 할당문
void ptr* = // 이건 제가 알기론 불가능
ptr* // 이것도 불가능 (뭐.. 곱셈 연산이라면 캐스팅같은걸로 가능할 수도 있겠지만, 곱셈 연산자를 물으신건 아니죠?)
ptr이 타입이라면.
ptr* something = NULL; // 역시 평범한 선언문.
*ptr something // 불가능
제가 알고 있는 것이 맞다면, 결국 *ptr이 쓰였다면 ptr을 변수로 보시면 될것 같고, ptr*를 보셨다면 ptr을 타입으로 보시면 될것 같습니다. 실제 코드를 읽을 때 헷갈일 일은 전혀 없겠지만요.
--
*의 의미를 정확히 아시는게 먼저 중요한듯 합니다만,,
* 의미는 두가지가 있는것으로 알고 있습니다.
1. int *a; 같은 경우 주소값을 저장하는 변수라는 뜻과
2. *a=10 이 같은 경우는 주소 참조 연산자로 쓰여 값을 지정할수 있죠
그리고 a* 같은 경우는 주소와 관련되서는 쓰이지 않는 것으로 알고있습니다.
댓글 달기