以下代碼是利用指針完成字符串的複製,但是會出現運行時錯誤:段錯誤。我們知道段錯誤是跟內存地址的使用不當有關的。細細觀察代碼,發現了沒有爲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),加上這行代碼就可以成功運行了。當然,使用完後記得及時釋放分配的地址。