C-尝试将指向函数的指针作为参数传递时出错,can';得不到价值

C-尝试将指向函数的指针作为参数传递时出错,can';得不到价值,c,function,pointers,pass-by-value,C,Function,Pointers,Pass By Value,我无法将指向函数的指针作为参数传递,同时无法成功显示所指向的值。函数CHECKIFEPLE不能工作或接收指针PAR指向的值。对不起,代码太乱了 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <malloc.h> int calculatePrime(){ int i = 0, j = 0, z = 0

我无法将指向函数的指针作为参数传递,同时无法成功显示所指向的值。函数CHECKIFEPLE不能工作或接收指针PAR指向的值。对不起,代码太乱了

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <malloc.h>

int calculatePrime(){
    int i = 0, j = 0, z = 0, check = 0;
    int prime[100] = {2, 3, 5};
    int size = 3, primeNum = 7;
    int *pAr = prime;

    while (i <= 100){
        for (z = 0; z <= size - 1; z++){
            if (primeNum % prime[z] != 0){
                check++;
            }
        }
        if (check == size){
            prime[size] = primeNum;
            size++;
        }
        i++;
        primeNum += 2;
        check = 0;
    }
    return pAr;
}

int checkIfPrime(int *pAr, int num){
    int i, check = 0, isPrime = 0;
    int fail = 0;

    printf("\n\n");

    printf("Doesn't works here, *(pAr + 5): %d", *(pAr + 5));

    for(i = 0;i <= 45 && fail == 0; i++){
        if (num % *(pAr + i) != 0){
            check++;
        }
        else{
            fail = 1;
        }
    }

    if (check == 45){
        isPrime = 1;
        printf("\n%d is prime\n", i);
    } else{
        isPrime = 0;
        printf("\n%d is not prime\n", i);
    }

    return isPrime;
}

int main(){
    FILE *fp = NULL;
    fp = fopen("test.txt", "r");

    int i = 0, j = 0, k = 0;
    int even[20], odd[20], prime[20];

    int num, temp;
    char str[20];
    int isPrime;
    int ar[45];
    int *pAr;

    pAr = calculatePrime();
    printf("Works here, *(pAr + 5): %d\n", *(pAr + 5));

    isPrime = checkIfPrime(&pAr, 7);
    //Having issues here

    return 0;
}
#包括
#包括
#包括
#包括
#包括
int calculatetime(){
int i=0,j=0,z=0,check=0;
int素数[100]={2,3,5};
整数大小=3,素数=7;
int*pAr=prime;

虽然(i
CalculateTime
在其本地堆栈上创建一个
int
数组
prime
。从该函数返回的指针
pAr
,是该数组的地址。但是,函数返回后在堆栈上分配的数据状态应视为不确定。也就是说,没有保证,退出
CalculateTime
后,
pAr
引用的数据将不会损坏


如果要创建数据并从函数返回指向该数据的指针,则需要使用
malloc

之类的函数动态分配适当的空间。强烈建议将每行缩进4个空格,这样所有代码都将被视为代码。由于
#include
语句消失,请重新发布它们。在secon中即可d编译时,始终启用警告,然后修复这些警告。(对于
gcc
,至少使用:
-Wall-Wextra-Wconversion-pedantic-std=gnu11
)注意:其他编译器使用不同的选项来生成相同的结果。(编辑后)函数:
malloc()
已在头文件中原型化:
stdlib.h
因此不需要
#include
OT:为了便于阅读和理解:1)请一致缩进代码:在每个开始大括号“{”之后缩进。在每个结束大括号“}之前取消缩进。建议每个缩进级别为4个空格2)插入一个“合理”空格:在括号内、括号内、大括号内、逗号后、分号后、C运算符周围。3)在代码块周围插入一行空行:
如果
否则
开关
默认值
4)请按照axIOM:每个语句只有一条语句,最多只能声明一个变量声明。我已经将内存分配给指针PAR,例如:PAL=(int *)Maloc(45×sieZof(int))。;但是我仍然无法使它正常工作。您是否仍然将
&pAr
传递给
checkIfPrime
?是的,我在调用函数calculatetime&checkIfPrime之前分配了它。但是
checkIfPrime
int*
作为参数,但是
&pAr
int**