救急!!这个程序在vs2017中无法运行

#include "pch.h"
#include <iostream>
using namespace std;
void a(double a, double b, double *add) {
        *add = a + b;
    }
void j(double a, double b, double *jian) {
    *jian = a - b;
}
void m(double a, double b, double *cheng) {
    *cheng = a * b;
}
void c(double a, double b, double *chu) {
    *chu = a / (float)b;
}
int main()
{
        double *s1 = NULL;
        int d;
        cin >> d;
        if (d == 0) { a(12, 4, s1); cout << s1; }
        else if (d == 1) { j(12, 4, s1); cout << s1; }
        else if (d == 2){m(12, 4, s1); cout << s1; }
        else if (d == 3) { c(12, 4, s1); cout << s1; }
        else cout << "输入错误值";



    }

如题
麻烦大家解决一下,最好能把程序

#include "pch.h"
#include <iostream>
using namespace std;
void a(double a, double b, double *add) {
    *add = a + b;
}
void j(double a, double b, double *jian) {
    *jian = a - b;
}
void m(double a, double b, double *cheng) {
    *cheng = a * b;
}
void c(double a, double b, double *chu) {
    *chu = a / (float)b;
}
int main()
{
    double *s1 = NULL;
    //初始化
    s1 = new double;
    int d;
    cin >> d;
    getchar();
    if (d == 0) { a(12, 4, s1); cout << *s1; }
    else if (d == 1) { j(12, 4, s1); cout << *s1; }
    else if (d == 2){ m(12, 4, s1); cout << *s1; }
    else if (d == 3) { c(12, 4, s1); cout << *s1; }
    else cout << "输入错误值";

    getchar();
}

多学习指针这块。
首先,
double *s1 = NULL;
只是声明变量,并没有分配空间,不初始化不能直接用。

其次,
输出应该是
cout << *s1;
是输出s1指向的内容,不是输出s1本身(cout << s1 错误)。