C - 初始化指针抛出关于 nullptr 的异常

C - initialized pointer throws exception about nullptr

我有一个代码打算使用函数使用指针找到最小值。 问题是,即使我在调试时初始化指针,它也会显示:

Exception thrown: read access violation. min was nullptr.

第37行,代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"

int tab_min(const int* tab, int size, int *min);

int main()
{
    int limit;
    int tab[100];
    int * ptab = tab;
    int min = 2;
    int *pmin = &min;

    printf("Number of elements: ");
    scanf("%d", &limit);
    printf("List the elements \n");
    for (int i = 0; i < limit; i++)
    {
        scanf("%d", &*(ptab + i)); 
    }
    tab_min(ptab, limit, pmin);

    return 0;
}

int tab_min(const int* tab, int size, int *min) 
{

    if ((tab == NULL) || (size <= 0) || (min = NULL)) 
    {
        return 0; 
    }
    else 
    {
        for (int i = 0; i < size; i++)
        {
            if (*(tab + i) < *min) *min = *(tab + i); //Exception is here
        }
    return 0;
    }
}

有人可以向我解释一下我的推理有什么问题吗?

严重错误是 if ((tab == NULL) || (size <= 0) || (min = NULL)) 将 var min 分配给 NULL。

如果需要记录最小值,可以使用指针地址作为参数

int tab_min(const int* tab, int size, int **min);

if (*(tab + i) < **min) *min = (tab + i);

并像

一样打电话
tab_min(ptab, limit, &pmin);

感谢@Gerhardh 指出我的错误