Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ (ΕΚΤΥΠΩΣΗ)

231 views

Published on

Α. Δείκτες
1) Η μνήμη του υπολογιστή
2) Η έννοια του δείκτη
3) Ορισμός Δείκτη
4) Απόδοση τιμής σε δείκτη (Ο τελεστής &)
5) Απόδοση τιμής μέσω δείκτη (ο τελεστής *)
6) Παράδειγμα χρήσης δείκτη

Β. Δείκτες και Πίνακες
1) Το όνομα ενός πίνακα είναι δείκτης
2) Αποθήκευση ενός πίνακα στη μνήμη
3) Αριθμητική Δεικτών
4) Ισοδύναμος Συμβολισμός για πρόσβασή σε πίνακα

Γ. Δείκτες και Συναρτήσεις
1) Διοχέτευση Δείκτη σε Συνάρτηση
2) Διοχέτευση Ορίσματος σε Συνάρτηση μέσω Τιμής
3) Διοχέτευση Ορίσματος σε Συνάρτηση μέσω Αναφοράς

Δ. Παρατηρήσεις
1) Διοχέτευση πίνακα ως όρισμα σε συνάρτηση
2) Η Σταθερά NULL
Ασκήσεις

Published in: Education
  • Be the first to comment

  • Be the first to like this

Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ (ΕΚΤΥΠΩΣΗ)

  1. 1. H C 8: . 1. 2. 3. 4. ( &) 5. ( *) 6. . 1. 2. 3. ! 4. " # $ % % &. $ 1. $ 2. $ 3. $ ' . 1. 2. $ NULL A. 1. ! " # $ $ % ! ! &" " ' ! . " ' ( ) "'!! " % " " ( " $ $ ' & . ) ( " 1 byte ($ $ 8 bits). ' " ( " , ' ' ! & " *& ( '! $ " ). # " ' ' ! , ' ' ! & " , ' '! 1 byte: 1Byte 0 … 1 2 1000 1001 … 10000 10001 … 2x109 1Byte 1Byte 1Byte 1Byte 1Byte 1Byte 1Byte A. 1. ! " + $ " " ' $ ( " , ( . - " " " , $ " ( ! , ' " " . # " ! $ ! main " " ' ! . ('" & f), ! & " " (" " " ' ( " . / ( $ " ! ! & '" ' , ' ( ,' 0 ! " " , ! & " . .) … 1000 1001 … 15448 15449 … 1002 (! f (! main …… …
  2. 2. A. 1. ! " - $ ( , ' " " " , ! & " '! ( " " ! " , . # " . . f $ ( " ( $ &" , ( $ ' , ' , '" & x y ( & ' , $ " 4 bytes & " 0 " " ! ) 1 * … 1014 1015 … (! f (! main … … 1016 1017 1057 1058 1059 1060 … x y … …… A. 1. ! " ! # " ! . x=1 y=5 ' ( " " "( f, " , ' " ' . / " " $ $ " " & ( ( $ $ %' ! % ! . . 0 , " , " & $ $ $ ' : $ $ ' & (! *' " bytes $ " " ) ( byte " ' . . . x *' & ' 1 byte 1014, ( * !& ' " bytes 1014-1017. … 1014 1015 … (! f (! main … … 1016 1017 1057 1058 1059 1060 … x y … …… 1 5 A. 2. # " # " , ' ' " , , ' ' ( " ( " '! , " bytes) ! & " $ " 1 byte $ " . " ! & $ " ' , & " " "$ " C. 2 ! $ ! $ (" , " $ " , ! … 1014 … (! f (! main … … 1057 … x y … …… 1 5 A. 2. # ( $ (" , ('" & ptr) " . . $ " , x. , , & $ " & , ( 0 $ : $ ptr ' & $ " , x. 3 ' ! ! , $ ptr $ " , x … 1014 … (! f (! main … … 1057 … ) % x ptr … …… 1 1014
  3. 3. A. 3. / " # # $ $ ( $ &" : ( ' $ «/ _ » $ " , $ $ ' & «1 _ $ ' & » $ ! : +$( $ ( ' $ " ' p. +$( $ ( ' $ " double ptr " (" ' $ ' $ $ ' & . $ , ' $ " . / $ $ ' & " , (int *) (double *) " " $ (" $ . _ * _ int *p; double *ptr; A. 4. $ " 1 " $% ' ' $ ' " " " , , & ' , $ " , . ! * : / " & ( $ , 0 «$ " ») " , " '% $ " . 2 : x ' . . " $ " 10333, &x ($ " x) 10333, p " 10333. int x; int *p; p=&x; // p x. A. 5. $ " 1 '"& (/ " *) $$ / " * ( 0 " ' " $ " $ " ) ' $ " : + $ ( $ (" , $ . $ " * : " , , * " ' $ , % " " , $ $ . 4 ' $ ! : $ ! , " ' $ ! ' ", " " , x: x ( " ", " ) '"& $ $ " x (' " ", " ) int x; int *p; p=&x; *p=5; // *p ( x) 5 A. 6. $ ! 5 " ( $ ! & " , '" ! : /* pointers.c: Deixnei tin vasiki xrisi twn deiktwn */ #include <stdio.h> main() { int x; int *ptr; ptr=&x; x=5; printf("x=%dt *ptr=%dt &x=%dt ptr=%d",x,*ptr,&x,ptr); *ptr=8; printf("nx=%dt *ptr=%dt &x=%dt ptr=%d",x,*ptr,&x,ptr); x=9; printf("nx=%dt *ptr=%dt &x=%dt ptr=%d",x,*ptr,&x,ptr); }
  4. 4. 4. 1. 1 - $ / $ " " " $ " ! " , $ *’ " ' $ $ $ ' & $ $ ' & . " " ' $ $ * . & " ' $ $ " * : / $ $ " ( ' . / $ ptr * ! (" $( " , $ $ " ( " " " " ! & 0 ( . ptr=&pinakas[0] int pinakas[100]; int *ptr; ptr=pinakas; int pinakas[100]; int *ptr; ptr=&pinakas[0]; 4. 2. " " $ 8, $ " " $ $ ' '" . #% " ( $ " (" . + $ $ &" : ! ' 4 $ $ ( '" & " & 0 ' &pin[0],&pin[1],&pin[2],&pin[3] $ " & 4 , ( . 1 ! $ % $ & , ' ' " $ $ ' '" . int pin[4]; (! pin[0] pin[1] pin[2] … pin[3] … 4. 2. " " $ ! & " , '" " ! : /* matrix_pointers.c: Deixnei oti oi theseis mnimis enos pinaka einai diadoxikes */ #include <stdio.h> #define N 4 main() { int pin[N]; int i; for (i=0; i<N; i++) printf("nStoixeio:%d, Diefthinsi Thesis Mnimis: %d",i, &pin[i]); } 4. 3. ( $! ! " . / $ ' $ ' " (" $ $ " " $ " : #" & ! : * $ 1! * $ " bytes " $ $ ' & $ (! ' : 4!). + ( : ( $ " bytes " $ $ ' & $ (! ' : 4!). int pinakas[100]; int *ptr; ptr=pinakas; ptr--; ptr++;
  5. 5. 4. 3. ( $" 1 & ! $ & $ '* " '"& , $ ’ !/* pointer_calc.c: Pws exoume prosvasi sta stoixeia enos pinaka mesw deikti */ #include <stdio.h> #define N 10 main() { int pin[N]; int i; int *ptr; ptr=pin; for (i=0; i<N; i++) { printf("nStoixeio:%d, Diefthinsi Thesis Mnimis: %d",i, ptr); ptr++; } } 4. 3. ( $ ( % " , ! ", " " " ! ! & $ ! " % !' $ . $ & ' $ ! : ptr+=2 * " ptr 2 x ( '! double), * " $ " 16, % double , $ " 8 bytes. ' ' " ( & ( $ ptr $ " " pinakas[2]. double pinakas[100]; double *ptr; ptr=pinakas; ptr+=2; 4. 4. 6" $ , " ! ", " " $# , " $ ( , " " : * ! & * : 1 (array+2) $ $ " 3 " . 2 * " , $ 3 " . # " ! $ ! , : ! % " $ : *(array+2) for (i=0; i<N; i++) printf("%d",array[i]); for (i=0; i<N; i++) printf("%d",*(array+i)); . " 1. ' " " " % " ! ' $ $& " , (" $ " , ( ), ' $ & " & " " " " . . . 1 & " " : ' & " $ ! : # $ " ' ( p) ' ' ( x) , , & " " " % ' $ " , . 1 & ' " " : - " "( " " 0 " '% ' $ " ' , . $ %' ; 7 / ! 1 & , ( '"& , '"& $ ) " ' ! " ' ' C! int func(int *p, int x) int *func2(float y)
  6. 6. . " 2. ' " / " " " '"& 1 $ 6 « " », $ " " ' $ ( , ( " . " ! $ ' ' ! . /*byvalue.c: Perasma orismatwn mesw timis */ #include <stdio.h> void swap(int a,int b); main() { int a=5,b=10; printf("nMain: a=%d,b=%d",a,b); swap(a,b); printf("nMain: a=%d,b=%d",a,b); } void swap(int a, int b) { int k; k=a; a=b; b=k; printf("nSwap: a=%d,b=%d",a,b); } . " 2. ' " / " " " '"& 1 & $ ! . " " " swap, , ' a b ' ' a=5 b=10. ( ! " swap, " a, b " " swap ' " ' 5 10. : % " ' swap, 0 ' & a b " swap, $ ' ' , ' " swap & a,b " main $ 0 ! : a b … (! main 5 (! swap a b 510 10 a b … (! main 5 (! swap a b 1010 5 . " 2. ' " / " " " '"& 1 , " '"& , ( , !' ! " , ' $ & " , $ * % " ' ! ! " '. " " " " . ! " ' " " " " '! $ ' " " " " " '"& (by value) ' " " " ' " ' , $ , . + % ' " " " 0 , '" " " " «$ » " " " . $ ! " ' " " " " , '! $ ' " " " " " '"& % (by reference) & $ " " ' $ $ & " , , $ " , ! . " 3. ' " / " " " '"& % 2 " " & * : /*byreference.c: Perasma orismatwn mesw anaforas */ #include <stdio.h> void swap(int *ptrA, int *ptrB); main() { int a=5,b=10; printf("nMain: a=%d,b=%d",a,b); swap(&a,&b); printf("nMain: a=%d,b=%d",a,b); } void swap(int *ptrA, int *ptrB) { int k; k=*ptrA; *ptrA=*ptrB; *ptrB=k; printf("nSwap: a=%d,b=%d",*ptrA,*ptrB); }
  7. 7. . " 3. ' " / " " " '"& % 8 $ & $ ! . " " " swap, , ' a b ' ' a=5 b=10. '" $ " a 1000 b 1012. &a, ! 0 " 1000, ( &b ! 0 " 1012. ( 0 ' " swap : a b … (! main 5 (! swap ptrA 10 a b … (! main 5 (! swap 100010 1000 1012 ptrB 1000 1012 ptrA ptrB 1012 . " 3. ' " / " " " '"& % ! $ ( ' ' " swap: k=*ptrA; // ' " , k , $ ptrA *ptrA=*ptrB; ' " , $ ptrA $ ptrB *ptrB=k; ' " , $ ptrB k a b … (! main 5 (! swap 100010 1000 1012 ptrA ptrB 1012 k 5 a b … (! main 10 (! swap 100010 1000 1012 ptrA ptrB 1012 k 5 a b … (! main 10 (! swap 10005 1000 1012 ptrA ptrB 1012 k 5 . " 3. ' " / " " " '"& % " 1 : - ' " " " " $ , ' main! 2 ! ! , !' " , ' ' " main! . 0 : ' * , " " " ' " $ " " " " , $ " '"& % ($ $ '"& $ ) ( $ " '"& . + ' : ' "" ' " % '" . 1 ' " % ' " return '"& $ ! 9 $ " % ' '"& $ . . " 1. ' " & - " " " &" : + $ " " ' $ ' & " , ! % ' " ! &" $ " , , C $ $ : ! . & : 8 ! . & : / $ $ & " " ' $ ' " . void print(int *pinakas, int n); void print(int pinakas[], int n); , " & *’ " ' " " " " ! '"& % . 2 " $ ! ! " ' $ & " , ' " " " " . ' " ! % & " " " " , ' " " ( ' ! % .
  8. 8. . " 2. NULL # # " " ' & " ' $ $ ' " " " , . . . ($ : 3 $ ! " "% ' " ! 1 p $ $ , '" $ 0 , , ! ' "$ " % ! ( $ ( ' $ , ' " " 0 , ' " . 3 * (" ' $ ' . ! " C " ' " , " , NULL, " " , ! ' « $ $ $ ». $ ! : int x; int *p; *p=15; int *p; p=NULL; /* O p */ +. " " 1. ! " 7 0( 4’4 +* "&" % 1. . " " : • ! 0 0 * "&" ax2+bx+c=0. " " " '% ( '"& " ) " , ' x1 x2 ! ' 0 * "&" " '% return & " & * "&" • 4 : 3 " " " : • " ' " % $ math.h • 4 : / "$ " & printf, scanf ! $ $ ' & float %f ( ! %d " ) 2. # ! . " " main, $ , 0 " $ ' & a,b,c (" " ' * "&" ) % '" " " rizes ( 0 ,’ , * "& . int rizes(float a, float b, float c, float *x1, float *x2); double sqrt(double x); +. " " 2. " init_array $ 1. . " " : void init_array(int *pinakas, int n, int a, int b) ' n & , " $ " [a..b] 2. + '!* " " " $ ! +. " " 3. " print_array + ! ! " " : 1. . " " : void print_array(int *pinakas, int n) ( & pinakas. 2. + '!* " " " $ !
  9. 9. +. " " 4. " max_array + ! ! " " : 1. . " " : int max_array(int *pinakas, int n) " '% '! " " & pinakas 2. + '!* " " " $ ! +. " " 5. # ! 0 ! $ ! , ! . " " main : 1. 8 $ ( ' & 1000 '" & 2. '" ' , , $ 6 !' " " : 1. 8 " ! '! 2. 8 a '& b " , a b 0 " . 3. 8 , " '! " ( 4. 8 ( " 5. 8 '* $ , ,

×