Fondamenti di C/C++

Array e stringhe

Una stringa C è un array char terminato da null; std::string possiede memoria e lunghezza.

Che cos’è Array e stringhe?

Una stringa C è un array char terminato da null; std::string possiede memoria e lunghezza.

Scorri array fissi e misura il testo in sicurezza.

Punti importanti

  • Abilita i warning del compilatore e correggili.
  • Conosci tipo e lifetime di ogni valore.
  • Valida input e limiti degli array.

Esempi di codice C e C++

C
Esegui →
main.c
#include <stdio.h>
#include <string.h>

int main(void) {
    int values[] = {3, 5, 8, 13};
    char name[] = "Ada";
    size_t count = sizeof values / sizeof values[0];
    printf("%s: %zu values, %zu letters\n", name, count, strlen(name));
    return 0;
}
Output previsto
Ada: 4 values, 3 letters
C++
Esegui →
main.cpp
#include <array>
#include <iostream>
#include <string>

int main() {
    std::array values{3, 5, 8, 13};
    std::string name = "Ada";
    std::cout << name << ": " << values.size()
              << " values, " << name.size() << " letters\n";
}
Output previsto
Ada: 4 values, 3 letters

Confronto tra C e C++

sizeof conta un array locale, strlen cerca il terminatore e std::string::size è O(1).

C

C espone piccole API procedurali e dettagli di rappresentazione.

C++

C++ mantiene il modello low-level aggiungendo tipi più sicuri.

Esercizi pratici

Esegui entrambe le versioni e modificale per osservare le diverse garanzie.

  • Aggiungi input non validi e valori limite.
  • Compila con -Wall -Wextra -Wpedantic.
  • Separa dichiarazioni e implementazione.