이 argument의 뜻은 뭔가요? argNewFromArgv (char* const* cons
글쓴이: jongsuknim / 작성시간: 화, 2005/06/28 - 3:42오후
소스를 보던중 이런 함수가 있던데.. 여기서 argv가 뜻하는게 뭔가요? 이런거 처음 보네요..
extern Arguments* argNewFromArgv (char* const* const argv)
또 다른건..
extern Arguments* argNewFromString (const char* const string)
Forums:
[code:1]extern Arguments* argNewFromAr
char* const* const argv
char ** argv 와 비슷하지만
argv 값을 바꿀수 없고
*argv 의 값또한 바꿀수 없다.
결국 바꿀수 있는것은
**argv 값
argv = {"arc", "cdefsdg"}; // 불가
argv++; // 불가
*argv = "abc"; // 불가
(*argv)++; // 불가
(*argv)[0]) = '1'; // 가능
const 는 상수 한정자(? 맞나)입니다.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
const를 이해하는 방법입니다.1. const는 무조건 자기 왼
const를 이해하는 방법입니다.
1. const는 무조건 자기 왼쪽에 있는걸 상수로 만듭니다.
2. 왼쪽에 아무것도 없다면 오른쪽에 있는걸 상수로 만듭니다.
딱 두가지만 알고 계시면 됩니다. 사실 1번이 다죠. 왼쪽에 없으면 그냥 오른쪽거랑 묶으면 되니까 말입니다.
char const temp;
const char temp;
그래서 위의 두개는 같습니다. 좀 더 복잡해 보이는것으로 가보죠.
const char* temp; (char const * temp와 같습니다)
왼쪽에 있는 char가 상수라는 말입니다. *는 상수가 아니죠. 그래서 temp가 가르키는 값을 바꿀수는 없지만 다른걸 가르키도록 바꿀수는 있습니다.
char * const temp;
이제 쉽죠? const 왼쪽에 있는 *가 상수라는 말입니다.
*temp = 'c' 처럼 char를 바꿀수는 있지만 *가 상수라 temp에 다른 포인터를 넣을 수는 없습니다.
위의 예를 보죠. char * const * const argv 입니다. 왼쪽에 있는 * 두개가 상수라는 말입니다. 결국 상수가 아닌건 char 하나죠.
ps. const는 일관성없는 c문법의 대표주자중 하나라고 생각합니다. 물론 char* ptr, chr; 과 같은거에 비할바는 아니지만, 이해를 어렵게 만드는 한 요소임을 부정하기는 어렵죠.
.neuk
댓글 달기