c语言中的char *a,*b; strcpy(a,b);与a=b;有什么区别?

2025-01-06 08:32:18
推荐回答(5个)
回答1:

char *a,*b; //说明定义的是两个char型指针变量
strcpy(a,b); //此处用法是错误的,strcpy是字符串拷贝,a,b是指针a,b的地址,不是字符型的
char a,b; //说明定义的是两个char型变量
strcpy(a,b); //此处将b的值赋值给a

回答2:

有区别的,strcpy是将b指向的字符串的内容复制给a指向的地址,而a = b只是将a指向b指向的地址,现在它们指向同一个地址,但是你这里面的指针定义后它们都没有指向合法的地址,指向的不是合法的字符串,所以调用strcpy(a,b)会出问题的

回答3:

strcpy是拷贝,从b地址开始取字符,一个一个复制到从a开始的地址上。最后你获得了两个相同字符串,a和b分别指向两个字符串

a = b,是修改a的地址,让a指向b所在的位置。最后你只有一个字符串,a和b都指向这个字符串。

回答4:

  1. strcpy(a,b)是把b指向的字符串复制到a所指向的地址中,这样改变a,b互不影响

  2. a = b是将a指针指向b所代表的字符串,实际上改变a所指向的内容,b也改变了

回答5:

a=b;只是a指向了b指向的内存地址,一旦b销毁,a的内容也消失了。
strcpy(a,b)是将b指向的内存地址里的内容赋值到a指向的内存地址,这样b销毁时不影响a的内容。