Małe pytanie odnośnie wskaźników do tablicy

0

Jeżeli mam tak zadeklarowany wskaźnik do tablicy jak w tym programiku:

 #include <stdio.h>
#include <conio.h>

int main()
{
    int (*pa)[3] = {1,2,3};

    printf("%d\n", pa);

    *(pa + 1);

    printf("%d\n", pa);
    getch();
    return 0;
}
 

to jak mam poruszać się po tablicy? Bo sposób, którego tutaj użyłem nie działa poprawnie.

0

A co wg Ciebie robi "*(pa + 1);" ? I co to jest "int (*pa)[3]" ? :>

0

int (*pa)[3] jest wskaźnikiem do tablicy 3 elementów, a *(pa + 1) ma przesuwać po prostu wskaźnik na następny element

0

Troszkę zagmatwałeś - konstrukcja:

int (*pa)[3]

byłaby dobra ale do macierzy! :)

Można na upartego napisać coś takiego:

#include <stdio.h>

  int main() {
  int tablica[3] = {1,2,3};
  int (*pa)[3] = &tablica;
  printf("%d\n", **pa); // drukuje 1
  printf("%d\n", *(*pa+1)); // drukuje 2
  printf("%d\n", *(*pa+2)); // drukuje 3
  return 0;
}

Jednak raczej nie taki był Twój zamysł :)

0

Muszę o tym trochę dokładniej poczytać widocznie.

0

Tobie chyba chodziło o coś takiego (pisane z palca, bez testowania):


 #include <stdio.h>
 
int main() {
  int tablica[3] = {1,2,3};
  int * wsk = tablica;
  printf("%d\n", *wsk); // drukuje 1
  printf("%d\n", *(wsk+1)); // drukuje 2
  printf("%d\n", *(wsk+2)); // drukuje 3
  wsk = wsk+1;
  printf("%d\n", *(wsk)); // drukuje 2
  wsk = wsk+1;
  printf("%d\n", *(wsk)); // drukuje 3
  return 0;
}
0

samo tablica już jest wskaźnikiem
można zrobić coś takiego:

#include <stdio.h>
 
int main() {
  int wsk[3] = {1,2,3};
  printf("%d\n", *wsk); // drukuje 1
  printf("%d\n", *(wsk+1)); // drukuje 2
  printf("%d\n", *(wsk+2)); // drukuje 3
  return 0;
}

*(wsk+2) to to samo co wsk[2]

1 użytkowników online, w tym zalogowanych: 0, gości: 1