Warning
This page is located in archive.

3. přednáška

Pole jako parametr funkce

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;
}
Zpět

courses/a7b36pjc/lectures/ds03/pole-fce-c.txt · Last modified: 2015/01/16 21:04 (external edit)