如何 return 并打印出第一个字符串(string1)的起始地址?
How do I return and print out the starting address of the first string (string1)?
我先把第二个字符串复制到第一个字符串中。然后我将从函数 return string1 指针。然后我用
%p 和 (void*)
打印出第一个字符串的起始地址。这是正确的方法吗?
printf("address: %p \n", (void*)functionstrcpy(stringnumber1,stringnumber 2));
return 0;
}
char *functionstrcpy(char *stringnumber1,char *stringnumber2)
{
//calculation
return stringnumber1;
}
How do I return and print out the .... address of the ... string?
I use "%p"
and (void*)
to print out the starting address of the first string. Is this the right approach?
是的。 return 是正确的,"%p"
期望匹配 void *
。然而,由于 char *
和 void *
的编码和大小相同,因此两者都可以。
printf("address: %p \n", (void*)functionstrcpy(str1,str2));
// or
printf("address: %p \n", functionstrcpy(str1,str2));
因此,最好根据您所在小组的风格指南进行选择。
函数声明应如下所示
char * functionstrcpy( char *str1, const char *str2 );
既然您已经在使用标准 C 函数 strlen
那么为什么不使用另一个字符串函数 strcpy
?在这种情况下,函数可以只是函数 strcpy
的包装器,没有任何附加功能。
char * functionstrcpy( char *str1, const char *str2 )
{
return strcpy( str1, str2 );
}
如果您想自己编写函数而不使用标准 C 函数strcpy
,那么它的定义可以类似于
char * functionstrcpy( char *str1, const char *str2 )
{
for ( char *p = str1; ( *p++ = *str2++ ); );
return str1;
}
您可以在 printf
的调用中使用返回的指针,例如
printf("address: %p \n", (void*)functionstrcpy(str1,str2));
因为你只是在输出一个有效指针的值。
我先把第二个字符串复制到第一个字符串中。然后我将从函数 return string1 指针。然后我用 %p 和 (void*) 打印出第一个字符串的起始地址。这是正确的方法吗?
printf("address: %p \n", (void*)functionstrcpy(stringnumber1,stringnumber 2));
return 0;
}
char *functionstrcpy(char *stringnumber1,char *stringnumber2)
{
//calculation
return stringnumber1;
}
How do I return and print out the .... address of the ... string?
I use"%p"
and(void*)
to print out the starting address of the first string. Is this the right approach?
是的。 return 是正确的,"%p"
期望匹配 void *
。然而,由于 char *
和 void *
的编码和大小相同,因此两者都可以。
printf("address: %p \n", (void*)functionstrcpy(str1,str2));
// or
printf("address: %p \n", functionstrcpy(str1,str2));
因此,最好根据您所在小组的风格指南进行选择。
函数声明应如下所示
char * functionstrcpy( char *str1, const char *str2 );
既然您已经在使用标准 C 函数 strlen
那么为什么不使用另一个字符串函数 strcpy
?在这种情况下,函数可以只是函数 strcpy
的包装器,没有任何附加功能。
char * functionstrcpy( char *str1, const char *str2 )
{
return strcpy( str1, str2 );
}
如果您想自己编写函数而不使用标准 C 函数strcpy
,那么它的定义可以类似于
char * functionstrcpy( char *str1, const char *str2 )
{
for ( char *p = str1; ( *p++ = *str2++ ); );
return str1;
}
您可以在 printf
的调用中使用返回的指针,例如
printf("address: %p \n", (void*)functionstrcpy(str1,str2));
因为你只是在输出一个有效指针的值。