구두점, 구분자 개념?
핫레드
int * ptr;
int arr[];
위의 선언에서요, 별표와 첨자는 연산자가 아니라 구분자인가요? 그런데 구분자라는 건 원래 쉼표인 줄 알았습니다만...
a = 1, 2;
for( i=0, sum=0; i10; i++ )
위에서는 쉼표 연산자이고 아래서는 잘 모르겠네요.
int a, b, c; 여기서는 연산자가 아니고 구분자??
그런데 어떤 책에 보니까 이런 것들을 구두점이라고 표현해놓았는데, 문장을 강조한다고 설명합니다.
int * ptr; 명칭 ptr이 주소를 담는 대상체라는 것을 강조하기 위해서 *을 찍는다. 이런 식으로 말입니다... 연산자는 아닌 것 같은데... 강조한다라는 말이사실 잘 직관적이지는 않아서요. (세미콜론을 찍는 이유가 문장(명령문)임을 강조하기 위해서다 -_-?)
여하튼 구두점, 구분자 개념 좀 구분해 주시면 감사하겠습니다.
-
바름
변수는 상수속성을 가지지 않은(혹은 상수가 아닌) 이름을 의미하고(반대로 이름없는 상수, 이름없는 객체등도 있을수 있습니다), 심볼은 변수나 상수등에 붙은 이름 그 자체를 말합니다. int a = 10; 이란 구문은 변수속성을 가진 심볼 a로서 (이름없는)상수 10이 대입되는 정의 구문이죠.
객체=오브젝트=object,
대상체는 처음듣네요. -
꽃
더불어 포인터 선언에서의 *는 컴파일러 입장에선 이항연산자의 일종으로 해독합니다.
컴파일러의 구문 분석 과정에서 int * a와 같은 구문은 좌항엔 타입이, 우항엔 심볼이 등장하니 이항연산자의 모양이 됩니다. -
SchokoHolic
한글가지고 끙끙대기보다 그냥 원서 보는게 더 빠릅니다.
한국서적들 보면 개정등의 문제로 저자 자신도 자기용어에 혼동이 오는 경우나 조교들 동원해서 쓴책인지 챕터 넘어갈때마다 용어의 정의가 달라진다거나, 관용적으로 쓰는 용어라 실제 정의와는 다른 용어가 쓰인다던가 하는 경우가 많습니다.
원서는 그런일이 없고, 적어도 잘 번역된 번역서는 최소한 한가지 대상을 가리킬때 일관된 용어만 사용되기 떄문에 덜 해깔립니다.(아니면 최소한 대응표라도 있으니까요)
속독 -
플랜
*가 변수 선언에 사용되면 포인터 변수라는 것을 알리는 역할을 합니다.
-
누리봄
c나 cpp에서 *는 연산자로 기능합니다.
일반적인 이항연산자로 기능하는경우 곱하기 연산을 뜻하고
심볼 선언에선 해당 심볼이 포인터임을 알리는 목적으로 사용되며
포인터의 사용에선 단항연산자로서 포인터의 참조를 나타냅니다.
, 의 경우 분리자 정도로 번역되는 연산자인데...(구분자나 식별자라고 쓰기엔 identifiier와 좀 충돌하는 면이 있습니다.) 일반적인 문장에서와 같이 쉼표로 기능합니다. 전제조건을 그대로 두고 앞에것과 뒤의 것이 다르다는걸 의