C++/C指针变量导致,段错误问题

下面的代码报错为:zsh: segmentation fault(段错误的意思)
代码里的备注是我想让这段代码实现的功能,以及我的理解(误解?) 网友们可不可以解释一下为什么会报这个错误,以及想要实现该功能的正确代码。

#include <iostream>
using namespace std;
void func()
{
    int *b;      //声明指向整型变量的指针b
    int a = 10;  //声明并初始化整型变量a
    *b = a;      //让整型变量指针指向的整型变量值改为10
    cout << *b << endl;
}
int main()
{
    func();  //调用函数将10输出
}

void func()
{
    int *b;      //声明了一个指针变量,指向地址未知
    int a = 10;  //声明并初始化整型变量a
    b = &a;      //指针指向变量a
    cout << *b << endl;
    *b=20;  //改变指针指向变量的值
    cout << a << " " << *b << endl;
}

测试图:

img


一处小错误,将 * b=a;改成b=&a;就能正常运行并输出了。
改正如下:

#include <iostream>
using namespace std;
   
void func()
{
    int *b;//声明指向整型变量的指针b
    int a = 10;  //声明并初始化整型变量a
    b = &a;      //让整型变量指针指向的整型变量值改为10
    cout << *b << endl;
}
int main()
{
    func();  //调用函数将10输出
}

希望对题主有所帮助,可以的话,帮忙点个采纳!