C++编程:解析字符串与指针的关系

需积分: 12 16 下载量 7 浏览量 更新于2024-08-22 收藏 8.82MB PPT 举报
"这篇资源是谭浩强的经典C++课件,主要讲解了字符串的指针和指向字符串的指针变量。课件由清华大学出版社出版,由福建师范大学Jerryhuang制作。内容涵盖C++的基本概念,C语言的发展历史,以及C语言的特点。" 在C++编程中,字符串是一个重要的数据类型,它可以用来存储和处理文本信息。字符串的表示形式主要有两种,一种是使用字符数组。例如,在示例代码中,`char string[] = "I love China"`定义了一个名为`string`的字符数组,它包含了"I love China"这个字符串。在这里,`string`实际上是一个数组名,代表了字符数组的首地址,这个地址是常量,不可改变。在内存中,字符串以字符序列的形式存在,最后通常会有一个终止符`\0`,用来标记字符串的结束。 字符串的指针和指向字符串的指针变量是C++中处理字符串的常见方式。一个指针变量可以存储一个内存地址,当这个地址指向的是字符串的首字符时,我们称这个指针为指向字符串的指针。例如,我们可以声明一个指向字符的指针`char *p`,然后让`p`指向`string`数组,如`p = string;`。这样,通过`p`我们就可以访问和操作整个字符串。 C++是C语言的扩展,它引入了面向对象的编程特性,但仍然保留了C语言的很多基本元素。C语言在20世纪70年代由Dennis Ritchie和Brian Kernighan设计,以其强大的功能和高度的灵活性受到广泛欢迎。C++则在此基础上增加了类、模板、异常处理等机制,使得程序设计更加模块化和抽象化。 C语言的主要特点包括: 1. 结构化编程语言,易于理解和维护,可以编写大型系统程序或小型控制程序。 2. 拥有丰富的运算符,包括位运算,可以处理低级别的数据操作。 3. 程序具有良好的可移植性,可以在不同的计算机系统上运行。 4. 语法结构相对宽松,赋予程序员较高的设计自由度,但这也使得调试和学习难度相对较大。 对于初学者来说,掌握C++中的字符串指针和指向字符串的指针变量是基础,也是必要的技能。理解这些概念可以帮助编写更高效、更灵活的代码。同时,熟悉C语言的历史和特点也有助于深入理解C++的编程思想和方法。在实际编程中,需要对C++的语法规则有深刻的理解,以确保程序的正确性和高效性。

优化以下代码:#include <iostream> #include<string.h> using namespace std; class Book { private:     char bookname[30];     char authers[30];     char publishing_house[40];     int pages;     float price; public:     char getbookname();     char getauthers();     char getpublishing_house();     int getpages();     float getprice();          void setbookname(char *a);     void setauthers(char *a);     void setpublishing_house(char *a);     void setpages(int a);     void setprice(float a);     Book(char*a,char*b,cahr*c,int d,float e)     {         strcpy(bookname,a);         strcpy(authers,b);         strcpy(publishing_house,c);         pages=d;         price=e;     } }; char getbookname() {     char*a=bookname;     return a; } char getauthers() {     char*a=authers;     return a; } char getpublishing_house() {     char*a=publishing_house;     return a; } int getpages() {     int a=pages;     return a; } float getprice() {     float a=price;     return a; } void setbookname(char *a) {     strcpy(bookname,a); } void setauthers(char *a) {     strcpy(authers,a); } void setpublishing_house(char *a) {     strcpy(publishing_house,a); } void setpages(int a) {     pages=a; } void setprice(float a) {     price=a; } int main() {      Book a(char a="《C++程序设计》",char b="谭浩强编制",char c="清华大学出版社",d=484,e=36.00);      Book b(char a="《吹牛大王历险记》",char b="拉斯伯等编著",char c="天津人民出版社",d=149,e=12.80);     cout<<a.getbookname()<<"  "<<a.getauthers()<<"  "<<a.getpublishing_house()<<"  "<<"数:"<<a.getpages()<<"价钱:"<<a.getprice()<<endl;     cout<<b.getbookname()<<"  "<<b.getauthers()<<"  "<<b.getpublishing_house()<<"  "<<"数:"<<b.getpages()<<"价钱:"<<b.getprice()<<endl;     return 0; }

104 浏览量