我有一个关于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