C/C++学习:指针、数组与函数指针详解
需积分: 37 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++编程的基础,对于初学者来说,熟练掌握这些概念是至关重要的。理解并能正确使用它们将有助于编写更高效、更可靠的代码。
2018-06-21 上传
2023-08-05 上传
2023-09-06 上传
2023-08-31 上传
2023-09-09 上传
2023-08-10 上传
2023-10-30 上传
rzvs8275161
- 粉丝: 2
- 资源: 26
最新资源
- 全国江河水系图层shp文件包下载
- 点云二值化测试数据集的详细解读
- JDiskCat:跨平台开源磁盘目录工具
- 加密FS模块:实现动态文件加密的Node.js包
- 宠物小精灵记忆配对游戏:强化你的命名记忆
- React入门教程:创建React应用与脚本使用指南
- Linux和Unix文件标记解决方案:贝岭的matlab代码
- Unity射击游戏UI套件:支持C#与多种屏幕布局
- MapboxGL Draw自定义模式:高效切割多边形方法
- C语言课程设计:计算机程序编辑语言的应用与优势
- 吴恩达课程手写实现Python优化器和网络模型
- PFT_2019项目:ft_printf测试器的新版测试规范
- MySQL数据库备份Shell脚本使用指南
- Ohbug扩展实现屏幕录像功能
- Ember CLI 插件:ember-cli-i18n-lazy-lookup 实现高效国际化
- Wireshark网络调试工具:中文支持的网口发包与分析