C++编程基础:数组、动态内存、字符串与结构体

需积分: 0 0 下载量 152 浏览量 更新于2024-08-04 收藏 411KB DOCX 举报
"Microsoft Word 文档相关知识,包括数组、动态声明、字符串、结构体、共用体、指针、内存对齐、函数指针、typedef、const限定、内联函数和引用的介绍" 在编程中,数组是一种重要的数据结构,用于存储同类型的多个元素。在C++中,我们可以声明并初始化数组,如`inta[2] = {3, 4}`。需要注意的是,数组声明和初始化必须同时进行,不能分开,例如`inta[2]; a[2] = {3, 4}`是不合法的。如果未指定大小,可以通过初始化列表自动推断,如`inta[] = {3, 4}`。数组的大小可以通过`sizeof(a) / sizeof(int)`来计算。 动态内存分配在处理不确定数量的数据时非常有用。使用`new`关键字可以在运行时动态声明数组,如`int* arr = new int[10]`,这会在堆上分配内存,`arr`指向数组的第一个元素。释放内存时必须使用`delete[] arr`,避免内存泄漏。 字符串在C++中是字符数组,通常以`\0`作为结束标志。字符串可以相互赋值,也可通过`+`运算符连接。`char`数组可以初始化,但需按顺序进行。 结构体允许我们组合多种数据类型,可以使用`{}`初始化,但必须按顺序。共用体(union)则允许存储不同类型的值,但任何时候只有一个类型有效,常用于节省内存。 指针是C++中的重要概念,它的大小取决于系统的位数,如32位系统为4字节,64位系统为8字节。`delete`操作专门用于释放`new`分配的内存,且不能对同一内存块进行两次删除。`new[]`分配的内存必须用`delete[]`释放,对空指针`delete`是安全的。 内存对齐是编译器优化的一种策略,有助于提升访问效率,减少硬件故障。其原理和原因可以参考链接提供的知乎文章。 函数指针允许我们将函数作为参数传递或存储在变量中。声明函数指针时,只需将函数名前的括号去掉,如`double (*pf)(int)`。调用函数指针有两种方式:`(*pf)(5)`或`pf(5)`,两者效果相同。 `typedef`用来创建类型别名,例如`typedef double Real`,之后可以使用`Real`代替`double`。 `const`限定符通常用于指针,确保指针所指向的数据不可修改。对于基本类型,`const`修饰并无实际意义,因为它们本身是按值传递的。 内联函数的主要目的是提高程序执行效率,通过将函数体插入到调用处替代常规函数调用的过程。然而,大量重复的内联可能导致代码膨胀。 引用是C++中的另一特性,它像别名一样引用已存在的变量,必须在声明时初始化,且不能改变引用对象。引用一旦绑定,就不能再改变,不像指针那样可以重新赋值。