C++编程:部分赋值与数组初始化解析

需积分: 18 0 下载量 45 浏览量 更新于2024-08-24 收藏 8.81MB PPT 举报
"部分赋值-C++ 教程 谭浩强" 在C++编程语言中,部分赋值是一个常见的概念,特别是在处理数组或结构体等复合类型时。本教程可能涉及了如何初始化和更新数组的部分元素,特别是二维数组。在给出的描述中,可以看到两个例子展示了如何使用花括号({})进行部分初始化。 1. 首先,我们来看第一个例子: ```cpp int a[3][4]={{1},{5},{9}}; ``` 这个声明创建了一个3x4的二维整数数组`a`。通过花括号提供的初始值,我们可以看到只有第一列的元素被赋值了,`a[0][0]=1`, `a[1][0]=5`, `a[2][0]=9`,其余的元素默认初始化为0。这显示了在初始化数组时,如果只提供了部分初始值,其他未指定的元素将自动设置为对应的默认值(对于基本类型如int,就是0)。 2. 接下来,第二个例子: ```cpp int a[3][4]={{0,1},{5}}; ``` 这个例子中,`a`的前两行被部分初始化。`a[0][0]=0, a[0][1]=1`,`a[1][0]=5`,剩下的元素同样为0。这里值得注意的是,即使第二行只提供了`5`这个值,由于没有明确的逗号分隔,这意味着`5`只赋值给了`a[1][0]`,而`a[1][1]`到`a[1][3]`都为0。 这些例子突出了C++中初始化数组时的部分赋值特性,即可以不完全初始化数组的所有元素,而只给一部分元素赋予初始值。这对于编程时节省代码和提高效率是非常有用的。 此外,C++中的数组赋值不仅仅是针对初始化。在程序的运行过程中,也可以使用索引来部分更新数组元素,例如: ```cpp a[0][1] = 3; a[2][2] = 7; ``` 这样的语句会改变数组中特定位置的元素值。 在学习C++时,理解这种部分赋值的概念非常重要,因为它不仅适用于数组,还适用于结构体和其他复杂类型,例如类的对象。对于类的对象,可以使用成员初始化列表来部分初始化对象的成员变量,这是一种类似的部分赋值形式。 C++教程如《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; }

2023-05-22 上传