以下代码是利用指针完成字符串的复制,但是会出现运行时错误:段错误。我们知道段错误是跟内存地址的使用不当有关的。细细观察代码,发现了没有为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),加上这行代码就可以成功运行了。当然,使用完后记得及时释放分配的地址。
转载于:https://blog.51cto.com/jayson/927033