我们知道使用char类型的数据是用来处理字符串的,而数组又可用相应数据类型的指针来处理,所以可以用char型指针来处理字符串。通常把char型指针称为字符串指针或字符指针。
我们来看一个例子:
【例8.5】 strlen()是使用字符串指针来计算字符串长度的函数。
定义字符指针可以直接用字符串作为初始值,来实现初始化,可以将程序中的char str[]={"Program"};改写成:
char*str="Program";
或者
char*str;
str="Program";
注意,这样的赋值并不是将字符串复制到指针中,只是使字符指针指向字符串的首地址。但对于数组,例如:
char str[10];
str="Program";
这样写是不对的,str是数组名,而不是指针,只能按字符数组初始化操作,即
static char str[]={"Program"};
当字符串常量作为参数(实参)传递给函数时,实际传递的是指向该字符串的指针,并未进行字符串复制。
【例8.6】 向字符指针赋字符串。(www.xing528.com)
执行结果:
Hello!
Good-bye!
在这个例子中字符串是逐个字符输出的,也可以字符指针为变量,作字符串输出,例如,
printf("%s",s);
或
printf("%s",p);
【例8.7】 以字符指针为参数来调用字符串比较函数strcomp()。
strcomp()函数的形参s和t初值已由实参传递过来了,所以for语句的第一个表达式可以省略不写。
用指针处理字符串的复制,比用数组处理更精练。例如:
如果用数组处理则要复杂些,例如:
直接演化出指针处理,即
第1段程序是第3段程序的进一步简化,而且不必进行与\0的比较。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。