반응형
주 null에 있는 char * argv[] 인수가 종료되었는가?
그래서 명령행 매개변수가 항상 null로 종료되는지 궁금하다.구글은 그렇다고 답하는 것 같고 GCC에 편찬한 내용은 이런 경우를 나타내지만, 이것이 항상 사실이라고 보장할 수 있을까?
int main(int argc, char** argv)
{
char *p;
for(int cnt=1; cnt < argc; ++cnt)
{
p = argv[cnt];
printf("%d = [%s]\n", cnt, p);
}
return 0;
}
$ MyProgram -arg1 -arg2 -arg3
1 = -arg1
2 = -arg2
3 = -arg3
네. Null이 아닌 포인터가.argv
어레이 포인트가 C 문자열을 가리키며, 이는 정의상 null 종료된 것이다.
C 언어 표준은 배열 구성원이 "현줄에 대한 포인터를 포함해야 한다"고 간단히 명시한다(C99 §5.1.2.2.1/2).문자열은 "첫 번째 null 문자를 포함하여 종료된 문자의 연속적인 순서"이다(C99 §7.1.1/1). 즉, 문자열은 정의에 의해 null로 종료된다.
추가적으로, 배열 요소argv[argc]
null 포인터이므로 배열 자체도 어떤 의미에서는 "종료됨"이다.
예, 인수가 null 종료된 문자열인 것은 항상 사실이다.
참조URL: https://stackoverflow.com/questions/11020172/are-char-argv-arguments-in-main-null-terminated
반응형
'IT이야기' 카테고리의 다른 글
Nuxt 및 Jest를 사용한 Vuex 스토어 테스트에서 이.app 및/또는 주입된 플러그인에 액세스하는 방법 (0) | 2022.05.05 |
---|---|
파일을 만들고 쓰려면 어떻게 해야 하는가? (0) | 2022.05.04 |
계량분할(%)은 왜 정수만 사용하는가? (0) | 2022.05.04 |
소포 없이 수업 이름을 얻는 방법은? (0) | 2022.05.04 |
하위에서 상위로의 Vuetify 대화 상자 세트 프로펠러 돌연변이 (0) | 2022.05.04 |