의 차이점은 무엇입(int*)array(int*)&배열 및 배열에서 포인터 할당?

0

질문

나는 3 개의 라인을 수행하는 코드는 정확히 동일한지만 다른 문법,기본 코드:

    int a, b;
    printf("Enter the size of your array [a][b]: ");
    scanf("%d %d", &a, &b);
    int arr[a][b];

    int *pa;

    pa = (int *)&arr;
     
    for (i = 0; i < a*b; i++)
    {
        printf("[%d] [%d] = ", i/b, i%b);
        scanf("%d", (pa + i));
    }

에선 pa = (int *)&arr;수치는 라인 (int *)array, (int *)&array&array 없이 문제가 발생하만이 발생한 경고에서 마지막 하나입니다. 제가 궁금했던 정확한 구문은 그 사이의 차이는 모든 3 니다.

arrays c pointers
2021-11-24 05:02:40
2
0
  • 정확한 구문 pa = &arr[0]; 는 경우에 자신을 찾을 추가해야 할 캐스팅,당신은 당신이 뭔가 잘못하고 있다. 퉁명스럽게 넣고,초보자 인 경우에,당신은 할 수 없 주물 점니다.

  • pa = &arr 하지 않습니다"만 경고",그것은 잘못된 이번에는 소위 제약 조건을 위반-할당이 잘못되었의 비 호환되는 포인터 형식입니다. 공부하시기 바랍 무엇을 컴파일러 옵션을 추천 학습자를 대상으로 한 C? 무엇을 해야 하는 C 컴파일러가지를 발견하면 오류?

  • 마찬가지로, pa = (int *)&array 잘못된 포인터 변환 사이에는 비 호환되는 유형입니다. 그것은 컴파일만 컴파일러 특유의 결과입니다. 그것은 엄격히 말하는 잘못된 코드나 작동할 수 있는 특정 컴파일러와 시스템입니다.

  • pa = (int *)array 잘못된 것입 비슷한 이유로도 이후 array 은 부로 포인터 배열 형식을 하지 않는 int*.

2021-11-24 10:23:55

면 나는 단순히 pa=을 제공하며 저에게"[Error]서 할당되는 포인터 형식". 물었을 때 선생님은 그것에 대해,그것은 그가 무엇을 보여 주었다. 어떻게 단순히 수정하는 내 기본 코드를 원하십니까?
Minh Nguyen

@MinhNguyen 아아,내가 그것을 통지하지 않았었 2D 배열입니다. 업데이트됩니다 대답이다.
Lundin

Thankies 만들 것입니다,그의 메모에 대한 다음에 나는 뭔가 좋아하는
Minh Nguyen
0

음식 두 가지 주요:

  1. 의 주소는 배열의 주소는 그것의 첫번째 요소입니다.
  2. 때로 처리되는 포인터 배열이 저하로 포인터를 그 첫 번째 요소

그래서,

  1. pa = arr;
    

    에 해당하는

    pa = &(arr[0]);   // Type mismatch: RHS is int (*)[b]
    

    를 사용한 배역을 침묵할 때 오류를 일 pa = (int *)arr;.

  2. pa = &arr;
    

    에 해당하는

    pa = &(arr[0]);   // Type mismatch: RHS is int (*)[b]
    

    를 사용한 배역을 침묵할 때 오류를 일 pa = (int *)&arr;.

이러한 typecasts 은 안전하지 않습니다. 하려는 경우 치료로 그것의 1d 배열 int 값,최고 선언하는 것이기도 합니다.

2021-11-24 08:04:28

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................