我有一個關於strcpy()的問題。據我的理解,我認爲strcpy複製位於指針處的字節而不是指針本身。 但這段代碼似乎反應不同。strcpy()複製指針?
char* str2 = (char*) malloc(50) ;
printf("str2:%d (%p), strTrim:%d (%p)", strlen(str2),*str2,strlen(strTrim),*strTrim) ;
strcpy(str2,strTrim);
printf("str2:%d (%p), strTrim:%d (%p)", strlen(str2),*str2,strlen(strTrim),*strTrim) ;
我得到的輸出是:
str2: 64 (FFFFFFCD) , strTrim:8 (00000061)
str2:8 (00000061) , strTrim:8 (00000061)
現在,第一輸出線看起來很清晰。但是第二行讓我感到困惑。 爲什麼它將strTrim的指針複製到str2?我真的不明白。
如果要打印指針的值,你應該只提供'str2'和'strTrim'到'printf'而不是'* str2'和'* strTrim'(它實際上會打印出存儲字符串的內存部分)。 – nhahtdh 2012-07-16 13:16:53