#include
int main()
{
int i,strlen(char *s);
i=strlen("hello azhen");
printf("%d\n",i);
}
int strlen(char *s)
{
int n;
for(n=0;*s!='\0';s++)
n++;
return n;
}
改编自c primer plus的一个例子,重新编写一个strlen的函数,可是我不明白为什么strlen("hello azhen");也能实现,形参是指针,实参也要是指针才对啊,strlen("hello azhen");传递的是一个字符串啊,为何么这样也可以呢,谢谢啦,
strlen("hello azhen")
这个调用的时候,"hello azhen"这个字符串是一个常量,它是存在的。在程序编译的时候,会把这个常量字符串放到静态区去,调用的时候会传一个地址给strlen。你可以在strlen里面 %p 输出输出参数,看地址。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。