有人可以告诉我这段代码有什么问题吗?为什么这段代码不起作用?它涉及指针和函数的使用c
#include <stdio.h>
#include <stdlib.h>
char * prime(int N);
int main()
{
char* p = prime(13);
printf("%s", p);
return 0;
}
char * prime(int N)
{
int i,j=1;
char yes[] = "Number is a prime";
char no[] = "Number is not a prime";
for(i=2; i<=N-1; i++)
{
if(N%i == 0)
j=0;
}
if(j == 1)
return yes ;
else
return no ;
}
预计产量=所示
Number is a prime
输出=
在C.你千万不要返回局部指针/数组值这些变量超出范围时,函数退出和存储它指向的是不再有效。 – kaylum
用'* yes'替换'yes []',用'* no'替换'no []',你的代码就可以正常工作。另一种解决方案是摆脱“yes”和“no”变量,并返回字符串,例如'返回'数字是素数';' – user3386109
@ user3386109如何返回一个字符串?以及第一种方法如何工作?我们如何向指针变量提供字符串? –