开发者社区> 问答> 正文

关于一个指针的问题,目前真的想不明白

#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");传递的是一个字符串啊,为何么这样也可以呢,谢谢啦,

展开
收起
a123456678 2016-03-19 14:14:16 1887 0
1 条回答
写回答
取消 提交回答
  • strlen("hello azhen")
    这个调用的时候,"hello azhen"这个字符串是一个常量,它是存在的。在程序编译的时候,会把这个常量字符串放到静态区去,调用的时候会传一个地址给strlen。你可以在strlen里面 %p 输出输出参数,看地址。

    2019-07-17 19:08:08
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载