1:自已编写求字符串长度函数size_t strlen(const char *s) ==> int Stringlength(const char *s)
[知识点]: (摘自高质量程序设计指南--C++/C语言 第二版)
1: 字符指针的误区:当你使用字符指针来引用一个字符变量的时候,千万要当心,因为C++/C默认char* 表示字符串.例如:
char ch="a"; //用"a"来初使化字符变量
char *pChar=&ch; //字符指针指向字符变量
cout<<pChar<<endl; //错把字符当做字符串
正确的用法是:
cout<<*pChar<<endl; //取一个字符
2:用const修饰函数返回值: 如果给 "指针传递" 的函数返回值加const修饰符,那么函数返回值是一种契约性常量,不能被直接修改,并且该返回值只能被赋值给加const修饰的同类型指针(除非强制转型).例如函数:
const char *GetString(void);
则如下语句将出现编译错误 :
char *str = GetString();
正确用法是:
const char* str = GetString();
====代码部分:以下代码在Visal C++6.0环境下编译通过====
/*int Stringlength(const char *s)*/
#include<iostream.h>
#include <stdlib.h>
int Stringlength(const char *s)
{
//cout<<s<<endl; //输出值s并非字符串地址,而是字符串,见[知识点一]
if(s == NULL) exit(1);
int length = 0;
char *base = (char *)s; //或const char *base = s;见[知识点二]
while((*base++) != '/0') length++;
return length;
}
void main()
{
char *ch = "Hello,c++ world!";
cout<<ch<<endl;
cout<<*ch<<endl;
int len = Stringlength(ch);
cout<<len<<endl;
}