一下是我的代碼:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char *strcnp(char *sd,char *ds)
{
char *q=sd;
while((*ds++=*sd++)!='\0')
NULL;
return q;
}
int main()
{
char *a[4]={"abc","def","whf","where"};
printf("%d,%d\n",sizeof(a),sizeof(a[3]));
char *p=NULL;
p=(char *)malloc(strlen(a[0])+1);//若無此句,運行出現段錯誤
strcnp(a[0],p); //此句執行過後,p指向哪裡?
printf("%s\n",p);
free(p);
return 0;
}
p根本沒有變,因為你的strcnp只能修改指針指向的內容,而不能修改指針本身地址。如果你想修改p的地址,需要傳遞char**