찾다

 >  Q&A  >  본문

c++ - C 언어의 포인터 문제

*argv[]
argv는 주소이고, *argv[]는 주소가 가리키는 변수입니다.
argv는 주소인데 왜 argv[1]을 이렇게 호출할 수 있나요

给我你的怀抱给我你的怀抱2706일 전1004

모든 응답(7)나는 대답할 것이다

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-30 09:59:22

    argv[1]은 *(argv+1)

    과 동일합니다.

    회신하다
    0
  • 我想大声告诉你

    我想大声告诉你2017-06-30 09:59:22

    int main(int argc, char *argv[]) 吧。其实你想这么写也完全没有什么问题的 int main(int argc, char **argv)에 대해 물어보셨을 텐데요.

    char *s = '2333',那这个 s 指的是什么?字符串的首地址吧。同理,*argv[1] 정의하면 무엇을 저장하나요? 첫 번째 문자열의 첫 번째 주소입니다. 간단히 이렇게 이해하면 되고, 더 깊게 알고 싶다면 책을 읽어보면 된다.

    으아악

    흥미롭네요~ 사실 가끔 이해하고 싶으면 쓰는 방식만 바꿔도 될 때가 있어요.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-06-30 09:59:22

    원작 포스터가 하고 싶은 말

    으아악

    *argv[] 맞죠?

    char *argv[]是一个数组,数组的元素是char *,每一个char *都用于指向一个字符串的首地址。所以argv[1]就是指向第二个字符串的首地址(我们假设第一个字符串是argv[0])。所以说,argv[1] 역시 문자열의 첫 번째 주소인 주소입니다.

    배열과 포인터는 함수 매개변수로 사용될 때만 동일하게 간주될 수 있으므로 char *argv[]也可以写成char **argv여기서는 이것이 더 이해하기 쉬운지 모르겠습니다.

    회신하다
    0
  • 怪我咯

    怪我咯2017-06-30 09:59:22

    매개변수를 전달할 때의 유형은 *argv[]이며 이는 포인터에 대한 포인터인 **argv와 동일합니다

    회신하다
    0
  • 巴扎黑

    巴扎黑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]의 가치.

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-30 09:59:22

    배열의 이름은 실제로는 주소이므로 이렇게 사용해도 아무런 문제가 없습니다.

    회신하다
    0
  • 为情所困

    为情所困2017-06-30 09:59:22

    C언어에서 배열은 원래 주소입니다

    회신하다
    0
  • 취소회신하다