赋值运算符对字符串执行的操作

时间:2014-04-04 14:21:15

标签: c

我理解

char* a = "hello";
char* b = "olleh";
strcpy(a,b)

会将b的内容复制到a,但是......

char* a = "hello";
char* b = "olleh";
a = b;

我以前错误地这样做过。我想知道=运算符在这种情况下对字符串做了什么?

3 个答案:

答案 0 :(得分:0)

a和b都指向字符串"olleh"

答案 1 :(得分:0)

strcpy通过查看指针的位置并复制字符来复制字符串,直到复制空终止符。 a和b将指向具有相同内容的不同字符串。

a = b是指针赋值,因此a和b都将指向包含字符串“olleh”的SAME内存。

答案 2 :(得分:0)

{
    char *a="hello";
    char *b="olleh";

    printf("\n  Before a=b \n");
    printf("a: %d\nb: %d \n\n",a,b);

    a=b;

    printf("\n  After a=b \n");
    printf("a: %d\nb: %d ",a,b);

    return 0;
}

上述程序不言自明。在赋值(a = b)之前,a和b指向两个不同的字符串,因此它们将打印两个不同的地址。但是在赋值(a = b)之后,a和b的内容将是相同的,因为它们指向相同的字符串,即" hello"。