社区
C语言
帖子详情
简单问题。
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
打赏
收藏
简单问题。
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函数的参数不变,函数体应该怎么写,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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);
}
C#解决简易的背包
问题
应用 c# 解决背包
问题
简单
易懂 而且是初学者的学习样例
PCI简易通讯控制器驱动
PCI简易通讯控制器驱动,安装程序支持WinNT,Win2000,WinXP等系统。健康安全无污染的绿色驱动。
php版简易网上商城源码
php版简易网上商城源码,这个是从一个朋友处独得,是一个不错的程序,比较适合php初学者上手,边学习,边阅读里面的代码,相信你会有意想不到的收获.
用c++编写的八后
问题
实验报告,非常简易
用c++编写的内涵八后
问题
源代码可以实现8后
问题
,内含截图,很
简单
。
jsp实现的简易计算器
Jsp简易计算器
C语言
70,037
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章