C 언어에서 식별자(Identifier)는 프로그램을 구성하는 토큰(token) 중 하나로, 변수·상수·함수·배열 그리고 사용자가 정의한 데이터에 이름을 붙여 서로 구별할 때 사용되는 고유한 이름입니다.
식별자에는 예약어(keyword)를 사용할 수 없습니다. int, return 같은 키워드는 컴파일러가 특수한 용도로 미리 예약해 둔 단어이기 때문입니다. 식별자가 한 번 선언되면 이후 프로그램의 다른 문장에서 그 이름을 통해 연결된 값을 참조할 수 있습니다.
또한 식별자 중에는 특수한 형태인 문장 라벨(statement label)이 있으며, 이는 goto 문과 함께 사용됩니다.
식별자 명명 규칙
식별자의 이름을 지을 때는 아래 규칙을 반드시 지켜야 합니다.
- 식별자 이름은 프로그램 내에서 고유(unique)해야 합니다.
- 키워드는 식별자로 사용할 수 없습니다.
- 식별자는 반드시 영문자 또는 밑줄(_)로 시작해야 합니다.
- 공백(white space)을 포함할 수 없습니다.
- @, #, $ 등의 특수문자는 허용되지 않습니다.
- 식별자는 영문자, 숫자, 밑줄(_)만으로 구성됩니다.
- 컴파일러가 인식하는 유효 글자 수는 앞 31자까지입니다.
- 대소문자를 엄격하게 구분합니다(case-sensitive). 예를 들어 sum과 SUM은 서로 다른 식별자입니다.
예제 코드
다음은 입력받은 문자열에서 모음과 자음의 개수를 세는 C 프로그램으로, 실제 코드 속에서 어떤 이름들이 식별자로 사용되는지 확인할 수 있습니다.
/* 문자열에서 모음과 자음 개수 세기 */
#include <stdio.h>
int main(){
char str[100];
int i, vowels, consonants;
i = vowels = consonants = 0;
printf("\nEnter any String : ");
gets(str);
while (str[i] != '\0'){
if(str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u'
|| str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' || str[i] == 'U'){
vowels++;
}
else
consonants++;
i++;
}
printf("\n no of Vowels in the given String = %d", vowels);
printf("\n no of Consonants in the given String = %d", consonants);
return 0;
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Enter any String : Tutorials Point no of Vowels in the given String = 6 no of Consonants in the given String = 9
위 프로그램에서 사용된 식별자는 다음과 같습니다.
str, i, vowels, consonants
참고로 위 예제에 사용된 gets() 함수는 버퍼 오버플로우 위험이 있어 최신 C 표준(C11)에서는 제거되었으므로, 실무에서는 안전한 fgets() 사용을 권장합니다.