malloc问题

kasim0070 2013-09-02 09:40:35
我在vc6下编译的
#include<stdio.h>
#include<string.h>
main()
{
char *s="fffds",*t="kllsd";
char *r,*malloc();
r = malloc(strlen(s)+strlen(t)+1);
strcpy(r,s);
strcat(r,t);
printf("%s",r);
}
这个可以通过而且没问题(c缺陷与陷阱的代码);
#include<stdio.h>
#include<string.h>
#include<malloc.h>
main()
{
char *s="fffds",*t="kllsd";
char *r,*malloc();
r = malloc(strlen(s)+strlen(t)+1);
strcpy(r,s);
strcat(r,t);
printf("%s",r);
}
这个就出错了,大神指点下,为啥可以char *malloc();
malloc不是已经是void*的型的返回值了吗,而且我没调用malloc.h,竟然连警告没有,我把string去掉也可以过但是有警告
...全文
94 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
max_min_ 2013-09-02
  • 打赏
  • 举报
回复

char *r,*malloc();
//库函数没必要这么申明吧?
//而且很容易误导自己的!
图灵狗 2013-09-02
  • 打赏
  • 举报
回复
申明可以这样写,char *malloc(),与void* malloc(size_t)并不是绝对冲突,但是毫无意义,且相当危险。
引用 4 楼 u011670868 的回复:
为什么malloc能实现,并且char *malloc();不报错
kasim0070 2013-09-02
  • 打赏
  • 举报
回复
为什么malloc能实现,并且char *malloc();不报错
图灵狗 2013-09-02
  • 打赏
  • 举报
回复
malloc函数是在stdlib.h中的,关键是你这样做的目的何在?
引用 楼主 u011670868 的回复:
我在vc6下编译的 #include<stdio.h> #include<string.h> main() { char *s="fffds",*t="kllsd"; char *r,*malloc(); r = malloc(strlen(s)+strlen(t)+1); strcpy(r,s); strcat(r,t); printf("%s",r); } 这个可以通过而且没问题(c缺陷与陷阱的代码); #include<stdio.h> #include<string.h> #include<malloc.h> main() { char *s="fffds",*t="kllsd"; char *r,*malloc(); r = malloc(strlen(s)+strlen(t)+1); strcpy(r,s); strcat(r,t); printf("%s",r); } 这个就出错了,大神指点下,为啥可以char *malloc(); malloc不是已经是void*的型的返回值了吗,而且我没调用malloc.h,竟然连警告没有,我把string去掉也可以过但是有警告
kasim0070 2013-09-02
  • 打赏
  • 举报
回复
那不调用malloc.h的时候malloc怎么实现的在stdio里面实现嘛?
Carl_CCC 2013-09-02
  • 打赏
  • 举报
回复
char *malloc();这个是声明一下,显然当然include malloc.h的时候,声明冲突了。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧