C/C++学习:指针、数组与函数指针详解

需积分: 37 9 下载量 72 浏览量 更新于2023-07-15 1 收藏 50KB DOC 举报
"C/C++学习总结,包括变量定义、指针、数组、函数指针、内存管理和ASCII转义字符的详细解析。" 在C/C++编程语言中,理解和掌握变量的定义、指针的使用、数组和函数指针的声明至关重要。以下是相关知识点的详细解释: 1. 变量定义: - a) int a; // 定义了一个整型变量a - b) int *a; // 定义了一个指向整型数的指针a - c) int **a; // 定义了一个指向指针的指针,该指针指向的指针是指向整型数 - d) int a[10]; // 定义了一个包含10个整型数的数组a - e) int *a[10]; // 定义了一个包含10个指向整型数的指针的数组a - f) int (*a)[10]; // 定义了一个指向含有10个整型数数组的指针a - g) int (*a)(int); // 定义了一个指向接受整型参数并返回整型的函数的指针a - h) int (*a[10])(int); // 定义了一个包含10个指向接受整型参数并返回整型的函数的指针的数组a 2. 数据声明解析: - (1) float (**def)[10]; // def是一个二级指针,它指向一个一维数组的指针,数组元素是float类型 - (2) double*(*gh)[10]; // gh是一个指针,它指向一个数组,数组元素是double类型的指针 - (3) double(*f[10])(); // f是一个数组,包含10个元素,每个元素都是一个无参数且返回double的函数指针 - (4) int *(*b)[10]; // b是一个数组的指针,指向一个包含10个int指针的数组 - (5) Long (*fun)(int); // fun是一个函数指针,指向一个接受int参数并返回Long的函数 - (6) int (*(*F)(int,int))(int); // F是一个函数指针,指向一个接受两个int参数并返回一个函数指针的函数,该函数指针指向一个接受int参数并返回int的函数 3. ASCII转义字符: - 转义字符如\n、\t、\r分别表示换行、水平制表符和回车符,它们用于控制文本的布局和格式。还有其他转义字符如\a(响铃)、\b(退格)、\f(换页)、\v(垂直制表)、\ddd(八进制数表示的字符)、\xhh(十六进制数表示的字符)等。 4. sizeof()和strlen(): - sizeof()是运算符,用于计算变量或数据类型的大小(以字节为单位),而strlen()是C库函数,用于计算以'\0'结尾的字符串的长度。 - 对于静态数组和指针,sizeof()会分别返回数组分配的总大小和指针本身的大小,而strlen()仅计算字符串的实际长度。 5. struct与class的区别: - 类(class)的成员默认为private,而结构(struct)的成员默认为public。 - 类可以有成员函数,而结构不能直接定义成员函数(C++中可以)。 - 结构不支持继承,而类支持。 6. 内存分配方式: - 静态存储区域:全局变量和静态变量存储于此。 - 栈:函数调用时,局部变量在此分配,函数结束时自动释放。 - 堆:通过malloc/free或new/delete动态分配和释放,程序员需手动管理。 7. 动态内存管理函数: - strcpy()和strcat()用于字符串复制和连接。 - strcmp()用于比较两个字符串。 - strlen()计算字符串长度。 - strchr()查找字符在字符串中的位置。 - memcpy()、memcmp()和memset()分别用于内存块的复制、比较和填充。 8. 枚举与宏的区别: - 枚举是类型,可以定义一组常量,并在编译时进行类型检查。 - 宏是预处理指令,进行文本替换,没有类型检查。 9. const的使用: - const可以用于声明常量对象、常量指针、指针常量以及const成员函数等,提供了一种在编译时限制变量修改的方式,增强了代码的安全性。 以上知识点构成了C/C++编程的基础,对于初学者来说,熟练掌握这些概念是至关重要的。理解并能正确使用它们将有助于编写更高效、更可靠的代码。