c程序 段错误 (在线等。。。。)

lxk215313951 2009-05-10 11:36:34
#include<string.h>
#include<stdlib.h>
#include<stdio.h>

void test(char *p)
{
p = (char *)malloc(100);
}

int main(int argc, char* argv[])
{
char *p;

test(p);

strcpy(p, "ok");


return 0;
}

请问这段程序为什么报告段错误?
...全文
58 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxk215313951 2009-05-10
  • 打赏
  • 举报
回复
确实是这样的,楼上的好厉害啊!
谢谢了!
能适当讲解下么?
  • 打赏
  • 举报
回复

void test(char *p) //这里不传引用,你的malloc返回值只给到形参p,没有给到实参p,改传引用就是
{
p = (char *)malloc(100);
}

int main(int argc, char* argv[])
{
char *p;

test(p);

strcpy(p, "ok");


return 0;
}

nadoo 2009-05-10
  • 打赏
  • 举报
回复

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

void test(char **p)
{
*p = (char *)malloc(100);
}

int main(int argc, char* argv[])
{
char *p;
test(&p);
strcpy(p, "ok");
return 0;
}

69,369

社区成员

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

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