2010-12-08 88 views
1
void main() 
{ 
    char s[100]="hello"; 
    char *t; 

    t=(char*)malloc(100); 
    strcpy(t,s); 
} 

或者,我們可以分配給st這樣的:t=s;。使用替代品的缺點是什麼?在優勢下使用strcpy函數

+0

此代碼剛剛破解。 – 2010-12-08 17:41:22

回答

1

如果您指定t=s每個更改應用於t指向的內存塊將影響s,這可能不是您想要的。

此外,你可能想看看this post

5

當使用像t = s這樣的簡單賦值時,實際上並沒有複製字符串,而是使用兩個不同的名稱引用相同的字符串。

1

變量t的值是一個或多個連續的位置。當您執行t = s時,您正在將char s[0]的位置複製到t(並替換來自malloc()的舊值t)。 t[0]s[0]現在指的是完全相同的字符 - 修改一個將通過另一個可見。

當您使用strcpy(t, s)時,您正在將實際字符從一個位置複製到另一個位置。

前者就像在同一棟房子上放兩個房號。後者就像是將所有的傢俱完全複製到一個房子裏,並放入第二個房子中。

0

strcpy()功能用於複製一個到另一個字符串,你誤用它你可以很容易地做到了像指針here.When工作,

t=s; 

指針「T」得到的基址字符串's',這就是指針的用途。另一方面你strcpy的工作。你做一個指針存儲整個STRING。