Προς το περιεχόμενο

ΕΝΤΟΛΗ CHAR


voulaji

Προτεινόμενες αναρτήσεις

Δημοσ.

Μπορεί κάποιος να μου πει γιατί προκύπτουν τα εξής αποτελέσματα στους πιο κάτω κώδικες;

 

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"

Δημοσ.

Το πρώτο είναι απλό. Όταν κάνεις 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) δεν βγάζει νόημα. Το δοκίμασα και στο δικό μου υπολογιστή δεν γράφει τίποτα.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...