Απορρία για pointers C

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Απορρία για pointers C

Δημοσίευσηαπό stamatiou » 22 Ιουν 2011, 00:37

Παιδιά, τρέχω τον παρακάτω κώδικα:
Κώδικας: Επιλογή όλων

#include <stdio.h>

main() {
int a;
int *b;
a = 8;
b = &a;
printf("a = %d\nb = %d\n",a,*b);
*b++;
printf("a = %d\nb = %d\n",a,*b);
}

Και μου βγάζει αποτέλεσμα:
Κώδικας: Επιλογή όλων
a = 8
b = 8
a = 8
b = -16121856

Γιατί το b δεν είναι 9; Αφού όταν υπάρχει * πριν από το δείκτη ααφέρεται στο περιεχόμενο του...
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Απορρία για pointers C

Δημοσίευσηαπό migf1 » 22 Ιουν 2011, 00:49

Γιατί αυτός ο συμβολισμός αυξάνει τον δείκτη και όχι το περιεχόμενό του. Για να αυξήσεις το περιεχόμενό του πρέπει να γράψεις, είτε...
Κώδικας: Επιλογή όλων

(*b)++;

είτε...
Κώδικας: Επιλογή όλων

++*b;


δες εδώ: http://www.gvrteam.gr/forum/viewtopic.p ... 966#p46966
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση


Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι