2014-04-04 52 views
0

我明白什么赋值运算符做字符串

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

将B的内容复制到一个,但什么......

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

我被错误地这样做之前。我想知道在这种情况下,=运算符对于字符串有什么作用?

+6

'a'和'b'是*指针*,不是字符串。赋值分配指针值。 –

+6

另外,因为它们是字符串文字的指针,所以你的第一个块是未定义的行为。你不能写入字符串文字。 – Kevin

回答

0

的strcpy拷贝字符串,通过观察指针和复制的字符,直到它拷贝一个空终止的位置。 a和b将指向具有相同内容的不同字符串。

a = b是指针分配,所以a和b都会指向包含字符串“olleh”的SAME内存。

0

A和B都指向字符串"olleh"

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”。