Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

39 lines (26 sloc) 1.791 kb

dalinaum-kr:

materiality:

loveholy:

“애스터리스크를 타입에 붙여 쓰는 사람(ex. int* aPointer)은 이 변수가 포인터타입 변수라고 생각하는 사람이고, 변수 이름에 붙여 쓰는 사람(ex. int *aPointer)은 이 변수가 해당 타입이되 포인터라고 생각하는 사람입니다.”

— Cyrus.H

나는 원래 개념적으로 전자가 맞다고 생각하는데 C/C++ 문법의 한계 때문에 후자처럼 쓰는 부류다. 이를테면 int* a, b;와 같은 경우. 아무 생각 없이 이렇게 썼다가 피 볼 확률이 0이 아니니까.

가끔 차라리 ...

identification에 *, [], ()가 붙어야 된다고 생각하는 사람도 있습니다. 선언을 해석할 때는 identification을 중심으로 해석합니다. 아마 The C Programming Language를 보셨거나 cdecl을 쓰는 사람은 같은 방법으로 하는 분이 많을 겁니다.

또 이렇게 하지 않으면 *,[],()가 섞여서 사용될 때 해석하기 어렵거나 다른 컨벤션을 써야 할겁니다.

여담이지만 C/C++의 포인터 문법은 아래와 같은 형태가 되었어야 합니다.

int a*;
int a*[5];
int a[5]*;
int argv*[];
int argv[]*;
int func*();
int func()*;

일관성있고 어순과 일치하며 괄호가 필요없습니다.

나는 이렇게 되었으면 좋았을 거라고 생각한다:

int* a;
int*[5] a;
int [5]* a;
int*[] argv;
int[]* argv;
int*() func;
int()* func;
Jump to Line
Something went wrong with that request. Please try again.