Differences

This shows you the differences between two versions of the page.

Link to this comparison view

programare:laboratoare:lab08 [2017/11/13 15:57]
darius.neatu [Operatorul de dereferențiere]
programare:laboratoare:lab08 [2020/10/05 00:37] (current)
darius.neatu [Pointeri. Abordarea lucrului cu tablouri folosind pointeri.]
Line 1: Line 1:
 ===== Pointeri. Abordarea lucrului cu tablouri folosind pointeri. ===== ===== Pointeri. Abordarea lucrului cu tablouri folosind pointeri. =====
  
-**Responsabil:** [[laura.vasilescu@cti.pub.ro|Laura Vasilescu]]+**Responsabili:*
 +  * [[neatudarius@gmail.com|Darius Neațu (CA 2019-2020)]] 
 +  * [[ion_dorinel.filip@cti.pub.ro|Dorinel Filip (CA 2019-2020)]] 
 +  ​* [[laura.vasilescu@cti.pub.ro|Laura Vasilescu]]
  
  
Line 41: Line 44:
 **''&''​** - apare în fața variabilei asupra căreia acționează **''&''​** - apare în fața variabilei asupra căreia acționează
  
-Este aplicat unei variabile ​de un anumit ​tip de date și **obține ADRESA de (din) memorie** a variabilei respective.+Este aplicat unei **variabile, avand ORICE tip de date,** și **obține ADRESA de (din) memorie** a variabilei respective.
  
 ==== Operatorul de dereferențiere ==== ==== Operatorul de dereferențiere ====
Line 55: Line 58:
 Pentru ca dereferențierea să aibă loc cu succes, pointer-ul trebuie să indice o adresă de memorie validă, la care programul are acces. Această adresă poate fi adresa unei variabile declarate în prealabil sau adresa unui bloc de memorie alocat dinamic (după cum vom vedea mai departe). Pentru ca dereferențierea să aibă loc cu succes, pointer-ul trebuie să indice o adresă de memorie validă, la care programul are acces. Această adresă poate fi adresa unei variabile declarate în prealabil sau adresa unui bloc de memorie alocat dinamic (după cum vom vedea mai departe).
  
-Este indicată inițializarea pointerilor cu constanta ​''​NULL''​, compatibilă cu orice tip de pointer, care indica, prin convenție, un pointer neinițializat.+Este indicată inițializarea pointerilor cu constanta ​[[http://​www.cplusplus.com/​reference/​cstddef/​NULL/​ | NULL]], compatibilă cu orice tip de pointer, care indica, prin convenție, un pointer neinițializat. 
  
 ==== Particularități ==== ==== Particularități ====
Line 61: Line 65:
 int *a;             /* Pointer */ int *a;             /* Pointer */
 int b = 5;          /* Variabila */ int b = 5;          /* Variabila */
-char *c;            /* Pointer catre un caracter (sau sir de caractere)

 */ +char *c;            /* Pointer catre un caracter (sau sir de caractere) */ 
-void *buff = NULL;  /* Pointer catre void, initializat la NULL

 */+void *buff = NULL;  /* Pointer catre void, initializat la NULL */
  
 /* Asignare NEVALIDA; a este un pointer neinitializat */ /* Asignare NEVALIDA; a este un pointer neinitializat */
Line 71: Line 75:
  
 /* Continutul memoriei de la adresa a (care a fost initializata mai sus)  /* Continutul memoriei de la adresa a (care a fost initializata mai sus) 
-   ia valoarea 5
. Acest lucru este echivalent cu "b = 5;" ​+   ia valoarea 5. Acest lucru este echivalent cu "b = 5;" ​
  */  */
 *a = 5;    *a = 5;   
Line 257: Line 261:
   * Alocă dinamic memoria pentru vector (folosind ''​malloc''​),​ iar această alocare se menţine şi la ieşirea din funcţie.   * Alocă dinamic memoria pentru vector (folosind ''​malloc''​),​ iar această alocare se menţine şi la ieşirea din funcţie.
  
-==== Pointeri la funcţii ​====+==== Studiu de caz ====
  
 +<spoiler Pointeri la funcţii>​
 Anumite aplicaţii numerice necesită scrierea unei funcţii care să poată apela o funcţie cu nume necunoscut, dar cu prototip şi efect cunoscut. ​ Anumite aplicaţii numerice necesită scrierea unei funcţii care să poată apela o funcţie cu nume necunoscut, dar cu prototip şi efect cunoscut. ​
  
Line 306: Line 311:
   break; // iesire din ciclu la apasarea unei taste   break; // iesire din ciclu la apasarea unei taste
 </​code>​ </​code>​
 +</​spoiler>​
  
-===== Expresii complexe cu pointeri ​===== +<​spoiler ​Expresii complexe cu pointeri>
 Deşi sunt întâlnite mai rar în practică, limbajul C permite declararea unor tipuri de date complexe, precum: ​ Deşi sunt întâlnite mai rar în practică, limbajul C permite declararea unor tipuri de date complexe, precum: ​
  
Line 329: Line 334:
 </​code>​ </​code>​
 care semnifică o matrice de 5x10 de pointeri către pointeri constanţi la o funcţie, care nu ia nici un parametru, şi care întoarce un pointer către tipul ''​unsigned int''​. care semnifică o matrice de 5x10 de pointeri către pointeri constanţi la o funcţie, care nu ia nici un parametru, şi care întoarce un pointer către tipul ''​unsigned int''​.
 +</​spoiler>​
 ==== Exerciții Laborator CB/CD ==== ==== Exerciții Laborator CB/CD ====
 Primul exercițiu presupune rularea unei secvente de cod cu scopul de a clarifica diverse aspecte legate de pointeri. Analizați fiecare intrebare si incercati sa intuiti ce ar trebui sa se afiseze in continuare. După aceea verificați Primul exercițiu presupune rularea unei secvente de cod cu scopul de a clarifica diverse aspecte legate de pointeri. Analizați fiecare intrebare si incercati sa intuiti ce ar trebui sa se afiseze in continuare. După aceea verificați
Line 393: Line 398:
 </​code>​ </​code>​
 **Următoarele două probleme vă vor fi date de asistent în cadrul laboratorului.** **Următoarele două probleme vă vor fi date de asistent în cadrul laboratorului.**
 +
 +[[https://​drive.google.com/​drive/​u/​0/​folders/​1qB6EZLGVubKbuTXMtMue06egH_8fo25M|Checker laborator 8]]
 +[[ https://​ocw.cs.pub.ro/​courses/​programare/​checker | Tutorial folosire checker laborator ]]
 <​hidden>​ <​hidden>​
 +
 Link direct către lista completă de probleme: [[https://​docs.google.com/​document/​d/​1nERoSfIgBICsjXPB7SE5fH7Spq3WwlOzWNes6Eivp48/​edit|aici]] Link direct către lista completă de probleme: [[https://​docs.google.com/​document/​d/​1nERoSfIgBICsjXPB7SE5fH7Spq3WwlOzWNes6Eivp48/​edit|aici]]
 </​hidden>​ </​hidden>​
Line 423: Line 432:
  
 </​hidden>​ </​hidden>​
 +
 +[[https://​drive.google.com/​open?​id=1xohyDQGMxXdGMvzyega5wKBi9WWk6qXW|Probleme laborator 14-16]]
programare/laboratoare/lab08.1510581445.txt.gz · Last modified: 2017/11/13 15:57 by darius.neatu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0