Operacje na wskaźnikach

0

Wykonaj następujące ćwiczenia:
a) zdefiniuj:
-dwie zmienne x,y typu int, zainicjalizowane wartościami 10 i 20

  • tablice tab 5 elementów typu int o wartościach 6,3,5,2,4
  • dwa wskaźniki w1,w2 do elementów typu int
    b) ustaw wskaźnik w1 na zmienną x, w2 na zmienną y
    c) przypisz zmiennej y wartość obiektu na który wskazuje w1
    d) za pomocą wskaźnika w2 zmień wartość zmiennej y
    e) za pomocą w2 ustaw wskaźnik w1 tak aby wskazywał na zmienną y
    f) wypisz na ekran wartości następujących wyrażeń: &w1, &w2, w1, w2, *w1, *w2, &x, &y
    g) ustaw wskaźnik w1 tak aby wskazywał zerowy element tablicy, wypisz na ekran wartość w1 i tab
    h) posługując się wskaźnikiem ( nie zmieniając jego wartości) wypisz w pętli wszystkie elementy tablicy
    i) wypisz na ekran wartości nastepujacych wyrażeń: ++*w1, *++w1, (*w1)++, *w1++

Zinterpretuj otrzymane wyniki.

Oto kod który zrobiłem:

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
int x=10;
int y=20;
int tab[]={6,3,5,2,4};
int *w1,*w2;
int i;

w1=&x;
w2=&y;
y=*w1;
y=*w2;
w1=w2;


printf("&w1= %d\n &w2= %d\n w1= %d\n w2= %d\n *w1= %d\n *w2= %d\n &x= %d\n
&y= %d\n",&w1, &w2, w1, w2, *w1, *w2, &x, &y); 

w1=tab;
printf("w1= %d\n tab= %d\n",*w1,*tab);


for(i=0; i<5; i++)
{
         printf("%d \n",*w1);
         w1++;
}

printf("++*w1= %d\n *++w1= %d\n (*w1)++= %d\n *w1++= %d\n",++*w1, *++w1,
(*w1)++, *w1++ ); 

getchar();
} 

Wychodzą dość dziwne wyniki dlatego proszę o sprawdzenie kodu i ewentualną popraweę.

0

Jeśli chcesz wyświetlić pointer to nie używaj %d, tylko lepiej %p albo %X, ponieważ to jest adres.

0

za pomocą wskaźnika w2 zmień wartość zmiennej y
powinno być : *w2 = 13; // np 13, wtedy zmieni sie wartosc y na 13.
za pomocą w2 ustaw wskaźnik w1 tak aby wskazywał na zmienną y
zamiast y=*w2; powinno być w2 = w1; teraz w1 wskazuje na to co w2, czyli na zmienną y
Dalej nie czytałem.

0

edycja do górnego posta:
w2 = w1; <- oczywiscie ze zle, w1 = w2 jest dobrze :D

0

czyli co konkretnie mam zmienić ?

0

Zacząć od przeczytania jakiegoś kursu C/C++ aby przynajmniej rozumieć co do ciebie się mówi.

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