以下代码是利用指针完成字符串的复制,但是会出现运行时错误:段错误。我们知道段错误是跟内存地址的使用不当有关的。细细观察代码,发现了没有为main函数中co开辟地址空间,而在打印时出现了未知地址问题。怎么解决呢?malloc函数就用到了。

#include<stdio.h>

#include<stdlib.h>
void copy(char *s,char *q){
        while(*s!='\0'){
                *q=*s;
                s++;
                q++;
        }
        *q='\0';
}
void main(){
        char *co,*or;
        or="hello";
        copy(or,co);
        printf("%s",co);
}
  可以在main函数中copy(or,co)前为co分配动态空。 co=malloc(sizeof(char)*10),加上这行代码就可以成功运行了。当然,使用完后记得及时释放分配的地址。