Opisy funkcji /html_node/libc_528.html

Podobne dokumenty
nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof

Uzupełnienie dot. przekazywania argumentów

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Język C zajęcia nr 11. Funkcje

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Podstawy programowania C. dr. Krystyna Łapin

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Zmienne, stałe i operatory

Wstęp do Programowania, laboratorium 02

Czy procesor musi się grzać?

Podstawy programowania w języku C i C++

dr inż. Jarosław Forenc

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Programowanie w elektronice: Podstawy C

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty.

2 Przygotował: mgr inż. Maciej Lasota

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

( wykł. dr Marek Piasecki )

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

Wskaźniki. Programowanie Proceduralne 1

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Podstawy Programowania Podstawowa składnia języka C++

dynamiczny przydział pamięci calloc() memset() memcpy( ) (wskaźniki!! )

dr inż. Jarosław Forenc

Język C zajęcia nr 5

Podstawy programowania w języku C

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

if (warunek) instrukcja1; if (warunek) instrukcja1; else instrukcja2; a > b - a większe od b if (warunek) instrukcja1; a <= b - a mniejsze lub równe b

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Programowanie strukturalne i obiektowe

Programowanie komputerowe. Zajęcia 1

Programowanie Proceduralne

Wstęp do programowania 1

operator zmiany znaku operatory mnożenia, dzielenia, dzielenia modulo operatory dodawania, odejmowania

Wstęp do wskaźników w języku ANSI C

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Wskaźniki w C. Anna Gogolińska

Instrukcje sterujące. Programowanie Proceduralne 1

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Programowanie Proceduralne

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

Programowanie w języku C++

Języki i paradygmaty programowania

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

Proste programy w C++ zadania

Programowanie strukturalne. dr inż. Tadeusz Jeleniewski

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

KURS C/C++ WYKŁAD 7. struct Punkt { int x, y; int kolor; };

KURS C/C++ WYKŁAD 6. Wskaźniki

Język C zajęcia nr 7. Uwagi dotyczące stylu programowania

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Funkcja (podprogram) void

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

tablica: dane_liczbowe

Wykład Wskaźniki a tablice jednowymiarowe Arytmetyka wskaźników Dostęp do elementów tablic

dr inż. Jarosław Forenc

1 Podstawy c++ w pigułce.

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

Języki programowania - podstawy

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

1 Podstawy c++ w pigułce.

Część 4 życie programu

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Język ANSI C tablice wielowymiarowe

Laboratorium 1: Podstawy języka c. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

C++ wprowadzanie zmiennych

Spis treści JĘZYK C - OPERATORY BITOWE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

Spis treści JĘZYK C - INSTRUKCJA SWITCH, OPERATORY BITOWE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF05

for (i=0; i<10; i=i+1) instrukcja; instrukcja zostanie wykonana 10 razy for (inicjalizacja; test; aktualizacja) instrukcja;

Elementarne wiadomości o języku C

Wstęp do programowania

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Argumenty wywołania programu, operacje na plikach

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Wskaźniki. Informatyka

Wstęp. #define include include include include include include

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Wstęp do programowania 1

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Materiały pomocnicze do wykładu 3 - Elementy języka Java

Język ANSI C. Pierwsze starcie. Programowanie Proceduralne 1

ROZDZIAŁ 2. Operatory

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

Transkrypt:

Opisy funkcji Adres strony WWW : http://www.gnu.org/software/libc/manual/html_node/index. html (należy odszukać hyperlink Function Index) (http://www.gnu.org/manual/manual.html) http://www.gnu.org/manual/glibc- 2.0.6/html_node/libc_528.html 1

Operatory logiczne > większe >= większe lub równe < mniejsze <= mniejsze lub równe == równe!= nierówne 2

Operatory logiczne /* niech np. Gdzieś wcześniej jest : int prawda; */ if (!prawda ) instrukcja if ( prawda == 0 ) instrukcja (powyższe sposoby są równoważne) 3

Instrukcja warunkowa if (wyrażenie) instrukcja-1 else instrukcja-2 4

Instrukcja warunkowa if ( n>0 ) { if ( a>b ) z = a; } else z = b; 5

Instrukcja warunkowa /* instrukcje warunkowe można zagnieżdżać */ if ( wyrażenie-1 ) instrukcja-1 else if ( wyrażenie-2 ) instrukcja-2 else if ( wyrażenie-3 ) instrukcja-3 else instrukcja-4 6

adres zmiennej Do pobrania adresu zmiennej używa się jednoargumentowego operatora & (uwaga & może mieć także znaczenie dwuargumentowego operatora bitowego iloczynu logicznego) Jednoargumentowy operator * jest używany do wskazywania, tzn. jego argument jest adresem zmiennej. 7

adres zmiennej - przyklad #include <stdio.h> #include <stdlib.h> int main() { int k; int n; int *palec; palec=&k; k=10; n=(*palec)*15; printf("\n\nk=%5d n=%5d *palec=%5d\n",k,n,*palec); exit(0); } /* koniec funkcji main */ k= 10 n= 150 *palec= 10 8

Wskaźniki-0 Czy wskaźnik musi mieć typ? Czy może istnieć wskaźnik uniwersalny? Jeśli tak to: Czy można się posługiwać tylko wskaźnikami uniwersalnymi? 9

Wskaźniki-1 #include <stdio.h> int main() { float a[10]={0.,1.,2.,3.,4.,5.,6.,7.,8.,9.}; float * f1; /* wskaźnik do float */ int * p1; /* wskaźnik do int */ void * s1; /* wskaźnik uniwersalny */ f1 = &a[3]; p1 = &a[5]; /* kompilator zgłosi zastrzeżenia */ s1 = &a[7]; 10

Wskaźniki-2 p1 = s1; /* kompilator OK */ s1 = p1; /* kompilator OK */ p1 = (int *) s1; /* kompilator OK */ p1 = (int *) f1; /* kompilator OK */ /* nie ma sensu p1 = & 123L; */ printf("\n %d %p %x\n", *p1,p1,p1); printf("\n %f\n", *f1); return (0); } /* koniec funkcji main */ 11

Wskaźniki-3 1077936128 0xbffffa4c bffffa4c 3.000000 12

#include <stdio.h> Wskaźniki-4 int main() { int * p1; /* wskaźnik do int */ void * s1; /* wskaźnik uniwersalny */ p1=null; printf("\n %d \n", *p1); /* w wykonaniu segmentation fault */ printf("\n %p \n", p1); return (0); } /* koniec funkcji main */ 13

Wskaźniki-5 wynik programu: Segmentation fault (core dumped)...jeśli tą linię usuniemy to program wypisze (nil) 14

Wskaźniki-6 #include <stdio.h> int main() { int * p1; /* wskaźnik do int */ void * s1; /* wskaźnik uniwersalny */ p1 = (int *) 1; printf("\n %d \n", *p1); /* segmentation fault */ printf("\n %p \n", p1); return (0); } /* koniec funkcji main */ 0x1 15

#include <stdio.h> int main() { float x; Wskaźnik-7 float * f2; /* wskaźnik do zmiennej typu float */ f2 = & x ; /*!!!! wskaźnik wskazuje na coś rozsądnego */ *f2 = 23.4; printf("\n wartość x wynosi %5.2f\n",x); return (0); } /* koniec funkcji main */ wynik : 23.40 16

Wskaźniki-8 (wskaźniki jako argument funkcji call.c str. 213) #include <stdio.h> /* autor Steve Oualline */ void inc_count(int *count_ptr) { ++(*count_ptr); /* po co nawiasy zwykłe? */ } /* koniec funkcji inc_count */ int main ( ) { int count=0; /* licznik pętli */ while(count<10) inc_count(&count); printf("\n count=%d\n",count); }/* koniec funkcji main */ 17

Wskaźniki-8 (dygresja) #include <stdio.h> #include <stdlib.h> int main() { int alfa=10; int * wsk; 18

Wskaźniki-8 (dygresja) wsk=&alfa; ++(*wsk); printf("\n alfa=%d wsk=%p",alfa,wsk);/* 11 0xbffff2d4 */ ++*wsk; printf("\n alfa=%d wsk=%p",alfa,wsk);/* 12 0xbffff2d4 */ (*wsk)++; printf("\n alfa=%d wsk=%p",alfa,wsk);/* 13 0xbffff2d4 */ *wsk++; printf("\n alfa=%d wsk=%p",alfa,wsk); );/* 13 0xbffff2d8 */ exit(0);/* dobrze, że koniec, bowiem na co wskazuje wsk?*/ } /* koniec funkcji main */ 19

#include <stdio.h> #include <stdlib.h> int main() { int a=11,b=21,c; Dygresja c=a+++b++;/* dla pewności lepiej użyć nawiasów! */ printf(" a,b,c %d %d %d\n", a, b, c); /* wypisze 12 22 32 */ exit(0); } /* koniec funkcji main */ 20

Wskaźniki-9 (wskaźniki a macierze) float as[10]; /* każdy element ma długość 4 bajtów */ float * p3; p3 = & as[0]; /* lub */ p3=as; *p3=7; as[0]=7; *(p3+1)=8; as[1]=8; 21

Wskaźniki-10 (wskaźniki a macierze) float as[10]; /* każdy element ma długość 4 bajtów */ float * p3; p3=as; p3+=4; /* p3 = p3 +4 */ *p3=9; /* as[4]=9; */ /* dodawanie liczby całkowitej do wskaźnika skaluje się automatycznie */ 22

#include <stdio.h> #include <stdlib.h> int main() Wskaźniki-10 (dygresja) /*czy nazwa macierzy jest pełnoprawnym wskaźnikiem?*/ { int nowa[5]={10,11,12,13,14}; /* inicjalizowanie macierzy */ int * wsk; wsk = nowa; printf("%d %d\n", *wsk, *nowa); /* 10 10 */ printf("%d %d\n", *(wsk+1), *(nowa+1));/* 11 11 */ wsk++; /* wskaźnik wsk wskazuje na następną zmienną typu int*/ /* nowa++; tego kompilator nie zaakceptuje...*/ exit(0); }/* koniec funkcji main */ 23

#include <stdio.h> int main ( ) { float x; void * p2; float * p4; x=14; p2=&x; p4=&x; Wskaźniki-11 /* printf("\n %f\n",*p2);!!?? błędnie! */ printf("\n %f\n",*(float *)p2); printf("\n %f\n",*p4); }/* koniec funkcji main */ 24

Wskaźniki-12 int main() char bufa[100]= Uniwersytet ; char bufb[120];... copy_string(bufb,bufa); copy_string(&bufb[0],&bufa[0]);... /* koniec funkcji main */ 25

Wskaźniki-13 (str. 220) void copy_string (char *p, char *q) { while ( *p++ = *q++ ) ; } /* koniec funkcji copy_string */ /* while( *(p++) = *(q++) ) ; czytelniejsze! */ 26

#include <stdio.h> #include <stdlib.h> int f1(float); int f2(float); Wskaźniki (wskaźnik do funkcji) void zz ( int(*aa)(float), float t ); int (*f)(float); /* f jest wskaźnikiem do funkcji! */ int main( ) { int n; scanf("%d",&n); 27

Wskaźniki (wskaźnik do funkcji) if(n==1) { f=f1; zz(f, (float)n ); } else if(n==2) {f=f2; zz(f, (float)n ); } exit(0); } /* koniec funkcji main */ 28

int f1(float x) Wskaźniki (wskaźnik do funkcji) {printf("\n wewnatrz f1 x=%f\n",x); return(0); }/* koniec funkcji f1 */ int f2(float x) { printf("\n wewnatrz f2 x=%f\n",x); return(0); }/* koniec funkcji f2 */ void zz ( int(*aa)(float), float t ) { (*aa)(t); } /* koniec funkcji zz */ 29

Wskaźnik powinien na coś wskazywać (choćby na NULL) float * f4 = NULL; /* trzeba uważać by obiekt wskazywany nie zniknął!! */ 30

#include <stdio.h> #include <stdlib.h> int a[3][3]; int n,k; int *wsk; int main() { for(n=0;n<3;++n) for(k=0;k<3;++k) a[n][k]=10*n+k; wsk= (int*) a; for(n=0;n<9;++n) macierz dwuwymiarowa { printf("\n *wsk=%d",*wsk); wsk++;} printf("\n");/* wniosek: macierz jest przechowywana w pamieci wierszami */ }/* koniec main */ 31

*wsk=0 *wsk=1 *wsk=2 *wsk=10 *wsk=11 *wsk=12 *wsk=20 *wsk=21 *wsk=22 macierz dwuwymiarowa...powyżej wynik wykonania programu... 32

#include <stdio.h> #include <stdlib.h> pointer.c /* prototyp */ char *dec_bin (unsigned long a); int main () { char *bin_p; bin_p = (dec_bin (119L)); /* 119 to dziesietnie znak w */ printf ("\nteraz w main: %p\n", bin_p); printf (" Czyli:%c\n\n", *(bin_p)); exit(0); } /* koniec funkcji main */ char * dec_bin (unsigned long dec) { char *wsk; char litera_b; litera_b=dec; printf ("\n wewnatrz funkcji: dec=%ld\n", dec); wsk = &litera_b; printf ("\nwewnatrz funkcji: %p\n", wsk); printf (" Czyli:%c\n\n", *wsk); return (wsk); } /* koniec funkcji dec_bin */ 33

operatory bitowe - przypomnienie umożliwiają korzystanie, wykonywanie działań na pojedynczych bitach; zaś np. operator dodawania działa na całej zmiennej! & koniunkcja bitowa alternatywa bitowa ^ różnica symetryczna ~ negacja bitowa << operator przesunięcia w lewo >> operator przesunięcia w prawo 34