c++ strstr 返回值为啥static

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ strstr 返回值为啥static相关的知识,希望对你有一定的参考价值。

tatic const char* _strstr(const char* s1, const char* s2)

assert(s2 && s1);
const char* p=s1, *r=s2;
while(*p!='\0')

while(*p++==*r++);
if(*r=='\0')
return p;
else

r=s2;
p=++s1;


return NULL;

这里的static并不是指返回一个static类型的量,而是对函数的作用域的限制,用static声明的函数,其作用域仅限于定义该函数的文件,也就是说,只能在该函数定义所在文件中才能调用它,在其它文件中是无法调用的。追问

那这种限制对于strstr这种通用api有什么价值呢?

追答

能说一下这个函数的出处吗?是从那 个文件中看到的?这种情况见于从外部不是直接调用这个以下划线开头的函数,这个下划线开头的函数是供其它的函数调用的(假设这个函数是strstr()),而从外部是直接调用那个调用下划线开头的函数的函数(即strstr()函数)。

参考技术A static const char* _strstr(const char* s1, const char* s2)

assert(s2 && s1);
const char* p=s1, *r=s2;
while(*p!='\0')

while(*p++==*r++);
if(*r=='\0')
return p;
else

r=s2;
p=++s1;


return NULL;

以上是关于c++ strstr 返回值为啥static的主要内容,如果未能解决你的问题,请参考以下文章

为啥 C++ 从 C# 中为返回自定义结构的函数获取错误的参数值

c++ OpenProcess() 函数返回值为啥返回NULL 急需解决!!! 邮箱372199852@qq.com

C 语言字符串模型 ( strstr-while 模型 | 抽象函数模型 | 业务子函数接口定义要点 | 形参指针间接赋值 | 返回值状态 | 形参指针处理 | 形参指针判空 | 形参返回值 )(代码

c++中为啥要函数返回引用?

C++ 函数返回引用

无法用函数的返回值初始化对象。为啥? [复制]