|
걸음마 님이 쓰신 글 :
: 전종욱 님이 쓰신 글 :
: : 걸음마 님이 쓰신 글 :
: : : typedef struct Dept
: : : {
: : : AnsiString DeptName;
: : : int DeptCode;
: : : }TDept;
: : : typedef TDept* PDept;
: : :
: : : void __fastcall TForm1::FormCreate(TObject *Sender)
: : : {
: : : PDept NDept;
: : : TTreeNodes* pItems;
: : :
: : : ...
: : : ...
: : : 위에서 구조체로 사용자정의 변수를 쓰느건 알겠는데,
: : : TDept* 나 TTreeNodes* 와 같이 *를 뒤에 쓰는건 무슨 기호죠?
: : : 무식해서 죄송합니다. 꼭 좀 가르쳐주십시요...
: : : 그럼 ...
: : :
: :
: :
: : 그건.... 포인터(pointer) 라고 합니다.
: :
: : 이놈이 없는 경우엔 객체의 값 자체에 접근하여 작업하게 되지만
: :
: : 이놈은 객체의 주소를 가리키는 일을 하지요.
: :
: : 님께선 먼저 기초부터 다지셔야 겠네요...^^
: :
: : 급하시기도 하겠지만 나중을 위해선 차근차근 다져 나가야 하거든요.
: 우선 빠른 답변에 감사의 말씀 올립니다.
: 근데 제가 알고 있는 포인터는 보통 변수앞에 붙어 있는 거거든요.
: 근데 이건 왜 변수뒤에 붙어있냐 하는거죠.. 앞에 붙는 거랑 어떻게 다른 거죠?
: 구체적인 설명좀 부탁드립니다.
: 그럼 ....
: :
typedef TDept* PDept; 는 typedef TDept *PDept; 와 같습니다.
*를 앞에 붙이나 뒤에 붙이나 차이가 전혀 없지요.
단지 하나의 습관입니다.
예전의 C에선 거의 뒤에 붙여 썼는데, 근래에 C++로 프로그래밍하면서 많은 분들이
앞에 붙여서 쓰더군요.
전 아직 뒤에 쓰는게 훨씬 알아보기도 쉽고 좋던데....
또 하나... 다들 알고 계시겠지만, 님께선 혹시 모르실까봐서...
다음의 문장에서
TDept* PDept1, PDept2;
PDept1과 PDept2는 다릅니다. 전자는 포인터형 객체이고 후자는 그냥 일반 객체이지요.
*표시가 앞에 붙는다고 해서 뒤의 선언된 모든 객체에게 해당되는 것은 아니랍니다.
단지 앞에 것만 해당됩니다.
|