Ok so ive checked over the code and made some improvements. It mostly works but requires a few while loops which i copied from the book solution to the exercise (i have no idea how it works). Also the program still crashes on exit which has me stumped (i am running a 64 bit system and i have no idea if it makes a difference to the compiler. Here is the code -

Code:
#include <iostream> 
#include <string>
/* This program should request the make and model year of a car, then
print out the results */

const int ArSize = 10;

struct car { 
       char car_make[ArSize];
       int model_year;      
};

int main()
{
    using namespace std;
    int car_num;
    cout << "How many cars do you wish to catalogue? ";
    cin >> car_num;
    car * car_array = new car[(car_num - 1)];
    while(cin.get() != '\n') 
        ;
    /* I copied this while statement from exercise code but i dont know
    why it is needed to get cinput functionality to work properly*/
    
    for (int i = 0; i < car_num; i++) 
    {
           
           cout << "Car #" << i+1 << ":" << endl;
           cout << "Please enter the make: ";
           cin.getline(car_array[i].car_make, ArSize); //Starting at indice 1
           cout << "\nPlease enter the year made: "; 
           cin >> car_array[i].model_year;
           cout << endl << endl;
           while(cin.get() != '\n') 
           ;
    }
    
    for (int i = 0; i < car_num; i++)
    {
        cout << "\nThe make of car " << i+1 << " is: " << car_array[i].car_make; 
        cout << "\nThe year of car " << i+1 << " is: " << car_array[i].model_year;
        cout << endl;
    }
    cout << "About to crash";
    return 0; 
}