2014-04-04 50 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」。