Search
První příkladu ukazuje předávání pole funkci a přístup k jednotlivým položkám pomocí klasické notace používající hranaté závorky.
#include<stdio.h> void swap(int *a, int *b) { int p; p=*a; *a=*b; *b=p; } void bubble(int *pole, int l) { int i, j; int c=1; for (i=0; i<l-1 && c==1; i++) { c=0; for (j=0; j<l-i-1; j++) { if (pole[j]>pole[j+1]) { swap(&pole[j], &pole[j+1]); c=1; } } } } int main(void) { int i; int p[]={1, 7, 3, 9, 4, 10, 24, 1, 3, 6, 3, 9, 8}; int v=13; for (i=0; i<v; i++) printf("%d, ", p[i]); printf("\n"); bubble(p, 13); for (i=0; i<v; i++) printf("%d, ", p[i]); printf("\n"); return 0; }
Druhý příklad dělá totéž co první, ale k přístupu k prvkům používá pointerovou aritmetiku. Zde je třeba dát si pozor na prioritu operátorů a vše správně ozávorkovat.
#include<stdio.h> void swap(int *a, int *b) { int p; p=*a; *a=*b; *b=p; } void bubble(int *pole, int l) { int i, j; int c=1; for (i=0; i<l-1 && c; i++) { c=0; for (j=0; j<l-i-1; j++) { if (*(pole+j)>*(pole+j+1)) { swap(pole+j, pole+j+1); c=1; } } } } int main(void) { int i; int p[]={1, 7, 3, 9, 4, 10, 24, 1, 3, 6, 3, 9, 8}; int v=13; for (i=0; i<v; i++) printf("%d, ", *(p+i)); printf("\n"); bubble(p, 13); for (i=0; i<v; i++) printf("%d, ", *(p+i)); printf("\n"); return 0; }