简单问题。

sun__light 2001-04-18 10:10:00
void test(char *s,int &len)
{
s = new char[10];
len=10;
strncpy(s,"1234567890",len);
}
void main
{
char *p =0;
int len;
test(p,len);
// if(p)
// delete p;
}
请问为什么 在执行 test(p,len)函数后 仍然为p =0,若test函数的参数不变,函数体应该怎么写,谢谢!


...全文
118 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
地平线 2001-04-21
  • 打赏
  • 举报
回复
你传递了一个指针到函数,而在函数内改变指针的值,型参实参+指针的问题.
比较简单的方法传指针引用. -- &p
不过最好还是在外面new比较好
cber 2001-04-19
  • 打赏
  • 举报
回复
void test(char *s,int &len)改成这样就可以了:
void test( char *& s, int& len ) [推荐做法]或
void test( char ** s, int& len ) 不过这样论调用函数时就得这样写:test(&p,len),不够优雅:)而且要在函数内部改写原来的代码:(
第一种做法所需要的只是改变函数的声明就可以了,不需要再做别的改动了.

你的问题是出于对函数的传值和传址认识不够清楚.回去好好地想想吧,因为这部分比较具有迷惑性:)
snowbird 2001-04-19
  • 打赏
  • 举报
回复
好象有好多不好的地方
TsuLeon 2001-04-19
  • 打赏
  • 举报
回复
#include "string.h"
void test(char ** s,int & len)
{
(* s) = new char[10];
len = 10;
strncpy(s, "1234567890", len);
}
void main()
{
char * p =0;
int len;
test(& p, len);
}
love_jojo 2001-04-19
  • 打赏
  • 举报
回复
看来你也是一个新手啊!不然你的main后不会忘了加上()。
对不起与本题无关!
rh 2001-04-18
  • 打赏
  • 举报
回复
void test(char *s,int &len)
{
strncpy(s,"1234567890",len);
}
void main
{
char *p = new char[10];
int len(10);
test(p,len);
}

70,037

社区成员

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

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