1 / 10

Borland C/C++ mintapéldák mutatókra

Borland C/C++ mintapéldák mutatókra. 1. példa. #include <stdio.h> void main() { int x,y, *px; // X értéke 2 lesz x = 2; // PX felveszi X címét px = &x;

teddy
Télécharger la présentation

Borland C/C++ mintapéldák mutatókra

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Borland C/C++ mintapéldákmutatókra

  2. 1. példa #include <stdio.h> void main() { int x,y, *px; // X értéke 2 lesz x = 2; // PX felveszi X címét px = &x; // Y felveszi a PX által mutatott címen lévô // értéket. Mivel a PX az X-re mutat, X érté­- // ke pedig 2,ezért az Y értéke is 2 lesz ! y = *px; // Kiiratjuk X,Y értékét a PX által mutatott // cím értékét, ill. annak tartalmát ! printf("\nX=%d Y=%d PX=%p *PX=%d",x,y,px,*px); // Látható hogy PX hossza 4 byte ! }

  3. 2. példa • // Egy long integer alsó és felsô 2 byte-jának felcserélése • #include <stdio.h> void main() { long x; int segit , *y; printf("\nX erteke : ") ; scanf("%ld",&x); // Az Y az X címét veszi fel ugyan, de a cím // típusa az (int *) típusmódosítás miatt nem 4 // byte-ra mutató cím lesz, hanem 2 byte-ra // mutató cím. y = (int *) &x ; // Végeredményben az Y az X "alsó" 2 byte-jára // mutat. *Y nem más mint ennek a 2 byte-nak az // értéke.

  4. printf("Y tartalma = %d\n",*y); // Az Y+1 az X "felsô" 2 byte-jára mutat. *(Y+1) // nem más mint ennek a 2 byte-nak az értéke. printf("Y+1 tartalma = %d\n",*(y+1));// Most kezdôdik a csere : A SEGIT felveszi X alsó // két byte-jának értékét; segit = *y ; // Az X alsó két byte-ja felveszi a felsô 2 byte // értékét *y = *(y+1) ; // Az X felsô 2 byte-ja felveszi SEGIT értékét, // azaz az alsó 2 byet értékét. *(y+1) = segit ; // ---- A csere befejezôdött printf("X értéke forditva = %ld \n",x); }

  5. 3. példa /* ======= Változó hosszúságú integer vektorok ========== *//* ======= kezelése pointertömb segítségével ========== */ #include <stdio.h> int *pvek[5]; int v0[3] = { 1, 2, 3 }; int v1[5] = { 4, 5, 6, 7, 8 }; int v2[2] = { 9,10 }; int v3[4] = { 11,12,13,14 }; int v4[6] = { 15,16,17,18,19,20 }; int lv[5] = { 3, 5, 2, 4, 6 }; // A vektorok hosszai

  6. void main() { int i, j; // Elhelyezzük a vektorok címeit a pointervektor // megfelelô elemeiben. pvek[0]=v0 ; pvek[1]=v1 ; pvek[2]=v2 ; pvek[3]=v3 ; pvek[4]=v4 ; printf("\nPVEK[2][1] -> V2[1]) = %d\n\n",pvek[2][1]); printf("\nV1[1] = *++PVEK[1] = %d",*++pvek[1]); printf("\nV3[2] = *(PVEK[3]+2) = %d",*(pvek[3]+2)); printf("\nV4[5] = *(PVEK[4]+5) = %d",*(pvek[4]+5)); // A pvek[1] címet az eredetire kell állítani ! pvek[1] = v1 ; for( i=0; i<5; printf("\n"),i++ ) for( j=0; j<lv[i]; printf(" %2d",*(pvek[i]+j++) )); }

  7. 4. példa include <stdio.h> char *month_name(int); void main() { int h; printf("\nKérem a hónap sorszámát : ") ; scanf("%d",&h); printf("\nA hónap neve : %s", month_name(h)); }

  8. char *month_name( n ) /*Visszaadja az n-edik hónap nevét*/ int n; { static char *name[] = { "nem létezô hónap", "január", "február", "március", "április", "május", "június", "július", "augusztus", "szeptember", "október", "november", "december" }; return( (n<1 || n>12) ? name[0] : name[n] ); }

  9. 5. példa /* Példa függvényre mutató pointer használatára */ #include <stdio.h> #include <conio.h> // A getch() függvény miatt #include <math.h> // Az sqrt() függvény miatt void main() { int v, x, y, z ; // A func egy olyan függvényre mutató pointer, // amely float-ot ad vissza, és három darab int // típusú bemenô paramétere van ! float (*func)( int, int, int ); // A három függvény más más mûveletet végez, // ugyanazokon az adatokon. float osszeg( int, int, int ); float atlag( int, int, int ); float gyok( int , int, int ); float w;

  10. x = y = z = 2; // Választás menübôl clrscr(); printf("\n 1. Összeg képzése \n"); printf("\n 2. Átlag képzése \n"); printf("\n 3. Négyzetösszeg gyöke \n"); printf("\n"); printf("\nMelyiket a három közül: ") ; scanf("%d",&v); switch(v) { case 1: func = osszeg ; break; case 2: func = atlag ; break; case 3: func = gyok ; break; default: break; } w = func(x,y,z); printf("\nEredmény = %5.2f",w); getch(); } // A három függvény megvalósítása float osszeg( int o1, int o2, int o3 ) { return( (float) (o1+o2+o3) ); } float atlag( int a1, int a2, int a3 ) { return( (a1+a2+a3) / 3.0 ); } float gyok( int g1, int g2, int g3 ) { double gy; gy = sqrt( (double) (g1*g1 + g2*g2 + g3*g3) ); return( (float) gy ); }

More Related