求教字符指针作为函数参数的问题

2020-01-23 14:47发布

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
void catstr(char *dest,char *src);

void main()
{
        char *dest,*src="help you?";
        src=(char *)malloc(256);
        if((dest=(char *)malloc(80))==NULL)
        {
                printf("no memory ");
                exit(1);
        }
        dest="Can I ";
        catstr(dest,src);
        puts(dest);
}

void catstr(char *dest,char *src)
{
        int i=0;
        while(*dest)        dest++;
        for(i=0;i<9;i++)
        {
                *dest=*src;
                src++;
                dest++;
        }       
}
以上是我的代码,可是一运行就显示停止运行,单步调试显示这个    test1_4.exe 中的 0x0116151a 处未处理的异常: 0xC0000005: 写入位置 0x011657c6 时发生访问冲突   。
想实现两个字符串连接起来,求各路高手指点怎么实现啊,这个程序是郭天祥那本书的例子,不知道为啥用不了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
srtthree
1楼-- · 2020-01-24 18:01
jzkn 发表于 2014-4-29 13:20
弄了半天发现有几个问题:
1、src指向只读空间,后面又拿去赋值(*dest=*src),是不行的。
2、src先赋值为字 ...

谢大神,用改好的代码,明白了,主要还是对指针理解不够啊,试着一写程序就跑飞。大神,我这个函数指针用完后不需要再释放吗?
srtthree
2楼-- · 2020-01-24 19:15
 精彩回答 2  元偷偷看……
jzkn
3楼-- · 2020-01-24 23:19
srtthree 发表于 2014-4-29 16:29
谢大神,用改好的代码,明白了,主要还是对指针理解不够啊,试着一写程序就跑飞。大神,我这个函数指针用 ...

我不是大神哈,也是看了你的帖子又去重新学习了一下,呵呵。关于释放,可以看下面的从网页上拷贝来的:

只有动态分配的变量需要释放,如用malloc开辟的空间;

静态变量不需要释放,因为他在程序执行过程中一直存在,比如全局变量,和用static修饰的局部变量;
常量也不需要释放,因为他在程序执行过程中一直存在,比如char *p="hello world!";
局部变量也不需要释放,因为他用的是栈上的空间,会随着函数的结束而自动释放。
srtthree
4楼-- · 2020-01-25 04:58
jzkn 发表于 2014-4-29 16:56
我不是大神哈,也是看了你的帖子又去重新学习了一下,呵呵。关于释放,可以看下面的从网页上拷贝来的:

...

原来如此,懂了,指针用活了还是挺难得。谢了,这个是静态变量不用释放了
qiushui_007
5楼-- · 2020-01-25 06:54
必须要释放呀,否则最后成野指针了

一周热门 更多>