voulaji Δημοσ. 5 Ιουνίου 2008 Δημοσ. 5 Ιουνίου 2008 Μπορεί κάποιος να μου πει γιατί προκύπτουν τα εξής αποτελέσματα στους πιο κάτω κώδικες; char *fun(char *ptr) { ptr+=3; return(ptr); } void main() { char *x,*y; x="Hello"; y=fun(x); printf("\n%s",y); ΕΧΩ ΑΠΟΤΕΛΕΣΜΑ "lo" ------------------------------------------------------- void main() { int a=10,b=20; char x=1,y=0; if(a,b,x,y) { printf("EXAM"); } } ΕΧΩ ΑΠΟΤΕΛΕΣΜΑ "XAM"
Aesmade Δημοσ. 5 Ιουνίου 2008 Δημοσ. 5 Ιουνίου 2008 Το πρώτο είναι απλό. Όταν κάνεις x="Hello"; το x παίρνει ως τιμή τη διεύθυνση του 'H' που είναι το πρώτο γράμμα απ'το 'Hello'. Όταν κάνεις y=fun(x); το y παίρνει την τιμή του x+3, αφού χ=διεύθυνση του 'Η', x+3 θα είναι η διεύθυνση του δεύτερου 'l'. Όταν κάνεις printf("\n%s",y); τότε το πρόγραμμα αρχίζει να γράφει από την τιμή στη διεύθυνση y η οποία είναι το 'l' μέχρι το τέλος του string ('lo'). Το δεύτερο τώρα μάλλον προκύπτει από κάποιο μπέρδεμα στην assembly του exe σου, αφού το if(a,b,x,y) δεν βγάζει νόημα. Το δοκίμασα και στο δικό μου υπολογιστή δεν γράφει τίποτα.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.