C에서 포인터와 포인터 대 포인터 구조를 분석하는 트릭?

헨리

다음 코드가 주어 졌을 때이를 해결하기위한 트릭 (그래프, 다이어그램 또는 단계별 지침)이나 유사한 포인터 질문이 있습니까?
나는 이미 답을 알고 있다는 것을 의미합니다. 계산하는 데 너무 오래 걸렸습니다.

static int data[] = {0,1,2,3,4}
int*p[] = {data,data+1,data+2,data+3,data+4};
int**ptr=p;
ptr++;
printf("\n %d %d %d",ptr-p, *ptr-data, **ptr);
*ptr++;
printf("\n %d %d %d",ptr-p, *ptr-data, **ptr);
*++ptr;
printf("\n %d %d %d",ptr-p, *ptr-data, **ptr);
++*ptr;
printf("\n %d %d %d",ptr-p, *ptr-data, **ptr);
Yunnosh

포인터를 놓치는 상황에서 제가 가장 좋아하는 트릭은 펜과 종이를 사용하는 것입니다.
변수에는 사각형을, 포인터에는 화살표를 그립니다.
포인터 변수 인 가변 사각형에서 가리키는 사각형으로 화살표를 그립니다.

ASCII 아트에서는 종이처럼 직관적으로 작동하지 않지만 다소 비슷해 보입니다.

data [ 0 ][ 1 ][ 2 ][ 3 ][ 4 ]
       ^    ^    ^    ^   ^^
       |    |    |    |.../|     ("..." meaning chronologically progressing,
       |    |    |    |  / |            though this one is the fourth step)
       |    |    |    | /  |
p    [ | ][ | ][ | ][ |/][ | ]

       ^    ^    ^    ^ 
       |... |... |... |             (here are the first three steps)
      ptr

ptr은 p의 인덱스 4를 가리 키지 않고 대신 인덱스 3의 포인터가 증가하여 데이터의 인덱스 4를 가리 킵니다. (확실히 나는 그 세부 사항에 대해 실제로 다루지 않았고, 나는 당신의 코드에서 그것을 한 결과가 아니라 트릭에 내 질문을 집중합니다. 의도적으로 읽기 어려운 연산자 사용을 잘못 읽었을 수 있습니다 ...)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

포인터에 대한 C ++ 포인터 및 포인터에 대한 포인터를받는 함수 호출

분류에서Dev

포인터에 대한 C ++ 포인터 및 포인터에 대한 포인터를받는 함수 호출

분류에서Dev

스마트 포인터를 사용하여 const int에 대한 포인터

분류에서Dev

char 포인터 참조에 대한 typecast 구조체 포인터

분류에서Dev

C ++ 포인터에서 배열의 대상 구조체를 포함하여 구조체에 대한 값 읽기

분류에서Dev

뮤텍스를 포함하는 구조체에 대한 const 포인터

분류에서Dev

구조체의 포인터에 대한 포인터 초기화

분류에서Dev

포인터 주소 대 포인터를 C의 포인터에 전달

분류에서Dev

C, 포인터 (또는 포인터에 대한 포인터?), ** 및 malloc 관련

분류에서Dev

문자 포인터에 대한 포인터를 사용하는 동안 세그먼트 오류

분류에서Dev

c-구조체 포인터를 기대하지만 구조체와 그 반대

분류에서Dev

함수 포인터에 대한 포인터를 반환하는 함수

분류에서Dev

char 포인터 C ++에 대한 포인터 역 참조

분류에서Dev

구조에 대한 Qt 포인터

분류에서Dev

구조에 대한 이해 포인터

분류에서Dev

구조에 대한 Fortran 포인터

분류에서Dev

구조체 var에 대한 포인터

분류에서Dev

C에서 포인터에 대한 포인터를 사용하여 연결된 목록 구현

분류에서Dev

해당 포인터에 대한 포인터가있는 포인터 삭제

분류에서Dev

구조체와 구조체에 대한 포인터 사용

분류에서Dev

유형이 스마트 포인터인지 또는 스마트 포인터에 대한 참조인지 확인하는 방법

분류에서Dev

구조체 배열에 대한 포인터를 반환하는 C # marhsal 함수

분류에서Dev

참조에 대한 포인터 게터

분류에서Dev

포인터에 대한 포인터를 문자와 비교합니까?

분류에서Dev

개체를 가리키는 포인터에 대한 포인터 배열 삭제

분류에서Dev

C ++에서 구조체에 대한 포인터 벡터를 사용하는 방법은 무엇입니까?

분류에서Dev

C에서 구조체와 함께 포인터를 사용하는 방법

분류에서Dev

함수 포인터를 포함하는 c 구조체

분류에서Dev

포인트 클라우드 만 쿼리 포인트로 사용하는 D 차원에서 k 최근 접 이웃 검색에 대한 C ++ 데이터 구조

Related 관련 기사

  1. 1

    포인터에 대한 C ++ 포인터 및 포인터에 대한 포인터를받는 함수 호출

  2. 2

    포인터에 대한 C ++ 포인터 및 포인터에 대한 포인터를받는 함수 호출

  3. 3

    스마트 포인터를 사용하여 const int에 대한 포인터

  4. 4

    char 포인터 참조에 대한 typecast 구조체 포인터

  5. 5

    C ++ 포인터에서 배열의 대상 구조체를 포함하여 구조체에 대한 값 읽기

  6. 6

    뮤텍스를 포함하는 구조체에 대한 const 포인터

  7. 7

    구조체의 포인터에 대한 포인터 초기화

  8. 8

    포인터 주소 대 포인터를 C의 포인터에 전달

  9. 9

    C, 포인터 (또는 포인터에 대한 포인터?), ** 및 malloc 관련

  10. 10

    문자 포인터에 대한 포인터를 사용하는 동안 세그먼트 오류

  11. 11

    c-구조체 포인터를 기대하지만 구조체와 그 반대

  12. 12

    함수 포인터에 대한 포인터를 반환하는 함수

  13. 13

    char 포인터 C ++에 대한 포인터 역 참조

  14. 14

    구조에 대한 Qt 포인터

  15. 15

    구조에 대한 이해 포인터

  16. 16

    구조에 대한 Fortran 포인터

  17. 17

    구조체 var에 대한 포인터

  18. 18

    C에서 포인터에 대한 포인터를 사용하여 연결된 목록 구현

  19. 19

    해당 포인터에 대한 포인터가있는 포인터 삭제

  20. 20

    구조체와 구조체에 대한 포인터 사용

  21. 21

    유형이 스마트 포인터인지 또는 스마트 포인터에 대한 참조인지 확인하는 방법

  22. 22

    구조체 배열에 대한 포인터를 반환하는 C # marhsal 함수

  23. 23

    참조에 대한 포인터 게터

  24. 24

    포인터에 대한 포인터를 문자와 비교합니까?

  25. 25

    개체를 가리키는 포인터에 대한 포인터 배열 삭제

  26. 26

    C ++에서 구조체에 대한 포인터 벡터를 사용하는 방법은 무엇입니까?

  27. 27

    C에서 구조체와 함께 포인터를 사용하는 방법

  28. 28

    함수 포인터를 포함하는 c 구조체

  29. 29

    포인트 클라우드 만 쿼리 포인트로 사용하는 D 차원에서 k 최근 접 이웃 검색에 대한 C ++ 데이터 구조

뜨겁다태그

보관