Języki programowania
Laboratorium 11 – Wskaźniki w argumentach funkcji
1
Daniel Król – PWSZ Tarnów
1. Przykłady
a) Przekazywanie danych do funkcji
//-------------- FUNKCJA ---------------------------
void
wyswietl(int n, int *wsk)
{
int i;
for(i=0; i<n; i++)
printf(”%d ”,wsk[i]);
}
//---------------- MAIN ----------------------------
main()
{
int
tab[N]={1,4,6,8,2,4,5,0,-2,-8};
wyswietl(N, tab);
}
//--------------------------------------------------
b) Zwracanie wartości – sposób 1
//-------------- FUNKCJA ---------------------------
void
ustaw(int a, int *wsk)
{
int i;
for(i=0; i<N; i++)
{
*wsk=a;
wsk++;
}
}
//---------------- MAIN ----------------------------
main()
{
int
tab[N]={1,4,6,8,2,4,5,0,-2,-8};
int
i;
ustaw(5, tab);
for(i=0; i<N; i++)
printf(”%d ”,tab[i]);
}
//--------------------------------------------------
Języki programowania
Laboratorium 11 – Wskaźniki w argumentach funkcji
2
Daniel Król – PWSZ Tarnów
c) Zwracanie wartości – sposób 2
//-------------- FUNKCJA ---------------------------
void
ustaw(int a, int *wsk)
{
int i;
for(i=0; i<N; i++)
wsk[i]=a;
}
//---------------- MAIN ----------------------------
main()
{
int
tab[N]={1,4,6,8,2,4,5,0,-2,-8};
int
i;
ustaw(5, tab);
for(i=0; i<N; i++)
printf(”%d ”,tab[i]);
}
//--------------------------------------------------
d) Kopiowanie tablic
//-------------- FUNKCJA ---------------------------
void
wyswietl(int n, int *wsk)
{
int i;
for(i=0; i<n; i++)
printf(”%d ”,wsk[i]);
}
//-------------- FUNKCJA ---------------------------
void
kopiuj(int n, int *wska, int *wskb)
{
int i;
for(i=0; i<n; i++)
wskb[i]=wska[i];
}
//---------------- MAIN ----------------------------
main()
{
int
tab1[N]={1,4,6,8,2,4,5,0,-2,-8};
int
tab2[N]={0};
kopiuj(N, tab1, tab2);
wyswietl(N, tab1);
printf(”\n”);
wyswietl(N, tab2);
}
//--------------------------------------------------
Języki programowania
Laboratorium 11 – Wskaźniki w argumentach funkcji
3
Daniel Król – PWSZ Tarnów
2. Zadania
Dane są następujące wektory 3 elementowe:
float
V1[3]={-1, 7, 3};
float
V2[3]={ 5,-4, 6};
float
V3[3]={ 0, 0, 0};
napisz funkcje:
void
add_3(float *a, float *b, float *c)
// c=a+b
void
sub_3(float *a, float *b, float *c)
// c=a-b
float
len_3(float *a)
// |a|
float
dot_3(float *a, float *b)
// a•b
void
cross_3(float *a, float *b, float *c)
// c=a×b