关闭

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

1139人阅读 评论(0) 收藏 举报

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:40931次
    • 积分:537
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:14篇
    • 译文:0篇
    • 评论:11条
    最新评论