我明白什麼賦值運算符做字符串
char* a = "hello";
char* b = "olleh";
strcpy(a,b)
將B的內容複製到一個,但什麼......
char* a = "hello";
char* b = "olleh";
a = b;
我被錯誤地這樣做之前。我想知道在這種情況下,=
運算符對於字符串有什麼作用?
我明白什麼賦值運算符做字符串
char* a = "hello";
char* b = "olleh";
strcpy(a,b)
將B的內容複製到一個,但什麼......
char* a = "hello";
char* b = "olleh";
a = b;
我被錯誤地這樣做之前。我想知道在這種情況下,=
運算符對於字符串有什麼作用?
的strcpy拷貝字符串,通過觀察指針和複製的字符,直到它拷貝一個空終止的位置。 a和b將指向具有相同內容的不同字符串。
a = b是指針分配,所以a和b都會指向包含字符串「olleh」的SAME內存。
A和B都指向字符串"olleh"
{
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」。
'a'和'b'是*指針*,不是字符串。賦值分配指針值。 –
另外,因爲它們是字符串文字的指針,所以你的第一個塊是未定義的行爲。你不能寫入字符串文字。 – Kevin