*argv[]
argv는 주소이고, *argv[]는 주소가 가리키는 변수입니다.
argv는 주소인데 왜 argv[1]을 이렇게 호출할 수 있나요
我想大声告诉你2017-06-30 09:59:22
int main(int argc, char *argv[])
吧。其实你想这么写也完全没有什么问题的 int main(int argc, char **argv)
에 대해 물어보셨을 텐데요.
char *s = '2333'
,那这个 s
指的是什么?字符串的首地址吧。同理,*argv[1]
정의하면 무엇을 저장하나요? 첫 번째 문자열의 첫 번째 주소입니다. 간단히 이렇게 이해하면 되고, 더 깊게 알고 싶다면 책을 읽어보면 된다.
흥미롭네요~ 사실 가끔 이해하고 싶으면 쓰는 방식만 바꿔도 될 때가 있어요.
PHP中文网2017-06-30 09:59:22
원작 포스터가 하고 싶은 말
으아악에 *argv[]
맞죠?
char *argv[]
是一个数组,数组的元素是char *
,每一个char *
都用于指向一个字符串的首地址。所以argv[1]就是指向第二个字符串的首地址(我们假设第一个字符串是argv[0])。所以说,argv[1]
역시 문자열의 첫 번째 주소인 주소입니다.
배열과 포인터는 함수 매개변수로 사용될 때만 동일하게 간주될 수 있으므로 char *argv[]
也可以写成char **argv
여기서는 이것이 더 이해하기 쉬운지 모르겠습니다.
巴扎黑2017-06-30 09:59:22
여기*argv[]
定义的是指针数组,有n个指针类型的数组元素(argv[0],argv[1],...,argv[n]
)
(argv[1]
是指针数组的第2个元素,仍是一个指针,*(argv+1)
는 포인터 배열의 두 번째 요소가 가리키는 값, 즉 값입니다. )
argv[1]
是地址,具体怎么调用,要结合具体的上下文代码来分析。
一般会把argv[1]
放在另一个指针里int *p = (int*)argv[1];
,然后下文*p
取得*argv[1]
의 가치.