c gcvt函数疑问

#include<stdlib.h>
#include<stdio.h>
float re();
void internal();
int main(){
char * p;
gcvt(re(),5,p);
printf("%s\n",p);
// internal();
return 0;
}

float re(){
return 2.11;
}

void internal(){
char * p;
gcvt(re(),5,p);
printf("%s\n",p);
}

以上是代码,执行正常,把注释去掉执行报错说段多误,为什么呢?
还有 char * p; gcvt(5.01,5,p);这样调用也不对吧,应该先给p分配存储空间,但是执行没问题,不知道为啥?

我不知道为什么你能够跑起来,我编译后跑程序就是每次都报段错误。
错误原因你也知道了,就是因为*p没有分配空间。
建议LZ还是用数组比较稳妥。
温馨提示:答案为网友推荐,仅供参考
相似回答