C-尝试将指向函数的指针作为参数传递时出错,can';得不到价值
我无法将指向函数的指针作为参数传递,同时无法成功显示所指向的值。函数CHECKIFEPLE不能工作或接收指针PAR指向的值。对不起,代码太乱了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
#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;
虽然(iCalculateTime
在其本地堆栈上创建一个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**
。