Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

1 Pointere, referencer, struct’s mv.. 2 Erklæringer Eksempel på erklæringer int i, *ip, f ( ), *fip( ), (*pfi) ( ); Erklærer en integer, en pointer til.

Liknende presentasjoner


Presentasjon om: "1 Pointere, referencer, struct’s mv.. 2 Erklæringer Eksempel på erklæringer int i, *ip, f ( ), *fip( ), (*pfi) ( ); Erklærer en integer, en pointer til."— Utskrift av presentasjonen:

1 1 Pointere, referencer, struct’s mv.

2 2 Erklæringer Eksempel på erklæringer int i, *ip, f ( ), *fip( ), (*pfi) ( ); Erklærer en integer, en pointer til en integer, en funktion, der returnerer en integer en pointer til en funktion der returnerer en integer

3 3 Erklæringer static: variablen deallokeres ikke når funktionen forlades extern: funktionen eller variablen er erklæret i et andet program C-strenge ender med et ’\0’ tegn C-strenge printes med et %s i printf

4 4 SWAP Call by reference void swap(int *px, int *py) { int temp; temp = *px; *px = *py; *py = temp; } kaldes swap (&a, &b);

5 5 SWAP Call by value void swap(int x, int y) { /* virker ikke */ int temp; temp = x; x = y; y = temp; }

6 6 Pointere char *y; char x[100]; y is of type pointer to character (although it doesn't yet point anywhere). We can make y point to an element of x by either of y = &x[0]; y = x; Since x is the address of x[0] this is legal and consistent. Now `*y' gives x[0]. More importantly, *(y+1) gives x[1] *(y+i) gives x[i] and the sequence y = &x[0]; y++; leaves y pointing at x[1].

7 7 Finde længden på et char array Uden pointere: length(char s[ ]) { int n; for( n=0; s[n] != '\0'; ) n++; return(n); }

8 8 Finde længden på et char array Med pointere length(char *s) { int n; for( n=0; *s != '\0'; s++ ) n++; return(n); }

9 9 Sammenligning af strenge Returnerer 0 hvis strengene er ens ellers returneres > 0 int strcompare(char *s, char *t, int lng) { while(*t++ == *s++ && lng-- > 0); return lng; }

10 10 Visning af argumenter fra kommandolinjen int main(int argc, char *argv[]) { int i; char *arg1; char arg2[30]; for (i = 0; i < argc; i++){ printf("argument %d = %s\n", i, argv[i]); arg1 = argv[i]; printf("argument %d = %s\n", i, arg1); strcpy(arg2, argv[i]); printf("argument %d = %s\n", i, arg2); }

11 11 argc argv prog [-abc] arg1 arg2 main(int argc; char **argv) { int aflag = bflag = cflag = 0; if( argc > 1 && argv[1][0] == '-' ) { for( i=1; (c=argv[1][i]) != '\0'; i++ ) if( c=='a' ) aflag++; else if( c=='b' ) bflag++; else if( c=='c' ) cflag++; else printf("%c?\n", c); --argc; ++argv; }

12 12 Malloc og free Allokering af lager #include void *malloc(size_t size); Frigivelse af lager #include void free(void *ptr);

13 13 Struct (1) I c har man mulighed for at samle data i en struktur struct point { int x; int y; } // definere en struct, men erklærer intet struct point pt1, pt2; // erklærer to struct af typen point

14 14 Struct (2) struct { char navn[20]; int alder; } p1, p2; //definerer og erklærer p1 og p2 Der refereres til de enkelte medlem som følger: strukturnavn.medlem struct person p3 ={”Ole”, 5}; // erklærer og initierer

15 15 Struct (3) struct’s kan bruges som alle andre variable inclusiv i arrays Størrelse af en struktur sizeof p1 // sizeof element sizeof(person) // sizeof(typenavn)

16 16 Struct (4) Pointere til strukturer struct person *p3; // erklæring af en pointer til person strukturen Reference til et medlem (*p3).alder eller p3->alder. *p3.alder = *(p3.alder) og dette er ikke legalt da alder ikke er en pointer. *(p3->navn) er 1. tegn i navn

17 17 Typedef (1) typedef int Length // Length er synonym for int typedef char* String // String er synonym for char* Length bredde; // det samme som int bredde; String p; // det samme som char* p;

18 18 Typedef (2) typedef struct tnode *Treeprt; typedef struct tnode { int vaerdi; Treeprt left; Treeprt right; } Treenode; int main() { Treenode t; Treeprt head; }


Laste ned ppt "1 Pointere, referencer, struct’s mv.. 2 Erklæringer Eksempel på erklæringer int i, *ip, f ( ), *fip( ), (*pfi) ( ); Erklærer en integer, en pointer til."

Liknende presentasjoner


Annonser fra Google