strcmp 函数库中的声明:
int __cdecl strcmp (
const char * src,
const char * dst
)
#include<string.h>
#include<stdio.h>
int main( void )
{
char *s1 = "abcdkkkd";
char *s2 = "oefjeofjefo";
printf( "%d", strcmp( &s1, &s2 ) );
return 0;
}
程序为什么会正常运行?
int strcmp( const char *lhs, const char *rhs );
函数声明,c99 跟c11 略有差别,但不影响。
传入的就是指针,即使传入字符串变量,其实也还是一个地址。
比较的是从指针地址开始到空字符
\0
之间的字符串。针对你的问题,其实
比较的并不是你列出的两个字符串
,而是地址开始的字符串
,也许你会觉得这个地址开始不是字符串,那么C 自己在内存中往后找,直到遇到空字符串。