[数据结构复习]字符串1

来源:互联网 发布:零基础怎么学习seo 编辑:程序博客网 时间:2024/04/30 22:18

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;
}

原创粉丝点击