10.2 全局变量、局部变量、静态变量(strtok的用法以及实现原理)

全局变量定义在所有函数外面,所有函数都可以调用全局变量。但是局部变量只能在定义它的函数中使用,不能用在其他函数中。

#include<iostream>
using namespace std;
void Func()
{
	static int n = 4;//静态变量只初始化一次,下次调用的时候不会再次初始化,会直接跳过这个语句 
	cout << n << endl;
	++ n;
} 
int main()
{
	Func();//第一次调用,n=4,++n后n=5 
	Func();//跳过n=4,n不再初始化,n=5, ++n后n=6 
	Func();//跳过n=4,n不再初始化,n=6,++n后n=7 
	return 0;
}

#include<iostream>
using namespace std;

void Func()
{
	int n = 4;//不管之前的n为多少,n会一直初始化为4 
	cout << n << endl;//4
	++ n;
} 

int main()
{
	Func();//n会一直初始化为4,所以输出的结果一直都为4 
	Func();
	Func();
	return 0;
} 

strtok:将字符串分隔为单词的函数。

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	char str[] = "- This, a sample string, Ok.";
	char *p = strtok(str," -,.");
	while(p != NULL)
	{
		cout << p << endl;
		p = strtok(NULL, " -,.");
	}
	return 0;
} 

 

实现原理:

#include<iostream>
#include<cstring>
using namespace std;

char *Strtok(char *p, char *sep)
{
	static char *start;
	if(p)
		start = p;
	for(; *start && strchr(sep, *start); ++ start);
	if(*start == 0)
		return NULL;
	char * q =  start;
	for(; *start && !strchr(sep, *start); ++ start);
	if(*start)
	{
		*start = 0;
		++ start;
	 } 
	 return q;
}
int main()
{
	char str[] = "- This, a sample string, Ok.";
	char *p = Strtok(str," -,.");
	while(p != NULL)
	{
		cout << p << endl;
		p = Strtok(NULL, " -,.");
	}
	return 0;
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值