有一段代码如下:
--------------------------------------------
void mystrcpy(char* s, char* t);main() {
char* s2 = "this is a test.";
char* s3 = "hello world."; mystrcpy(s3, s2);
}void mystrcpy(char* s, char* t)
{
while ( (*s++ = *t++) != '\0')
;
}
-------------------------------------Question:
s2 比 s3要长, 在copy过程中s3的存储空间
是如何分配的?
--------------------------------------------
void mystrcpy(char* s, char* t);main() {
char* s2 = "this is a test.";
char* s3 = "hello world."; mystrcpy(s3, s2);
}void mystrcpy(char* s, char* t)
{
while ( (*s++ = *t++) != '\0')
;
}
-------------------------------------Question:
s2 比 s3要长, 在copy过程中s3的存储空间
是如何分配的?
解决方案 »
- 关于TransparentBlt的问题,内详,附代码,请进!解决马上结贴
- combo box的问题
- 连接问题,请大家看看
- 快帮帮忙吧。怎样在一个用MFC Appwizard生成的对话框中生成一个capCreateCaptureWindow()窗口?
- 帮我解决以下日语显示
- 熟悉install shield的人请进来!!!!高分求助!!
- 我做了一个COM组件,是EXE形式的,我在我的VC环境下可以被其它程序调用,但在别人机子上就不能调用,在注册表中也找不到注册项,不是COM
- 如何基于MFC开发语音交互,语音识别,语音合成,希望给出核心源码
- 如何把CString中的内容存入文件
- [救命]有人会用VC++写一文件系统的备份的程序吗?
- >>>>>>>>>>>>讨论:如何学习《COM》技术,来者有分!
- 关于InstallShield的问题
char* s2 = "this is a test.";
char* s3 = (char *)malloc(sizeof(s2)); mystrcpy(s3, s2);
}
char* s2 = "this is a test.";
char* s3 = (char *)malloc(sizeof(s2)); mystrcpy(s3, s2);
free(s3);
}
char* s2 = "this is a test.";
char* s3 = "hello world.";会被认为是指向常量的指针
而常量是不允许改变的
我也认为有问题, 但不敢怀疑权威, 故问大家。
看来鄙人太崇权威了。
Ritchie恐怕是拿这个做反面教材吧.
因为s3指向的常量字符串,不能对他进行写操作, 这里暂且不管s3所占的
字节数比s2所占的要少!在vc中这样做吧:
main() {
char* s2 = "this is a test.";
char* s3 = new char[strlen(s2)+1]; mystrcpy(s3, s2);
delete []s3;
}