C/C++学习:指针、数组与函数指针详解
需积分: 37 149 浏览量
更新于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++编程的基础,对于初学者来说,熟练掌握这些概念是至关重要的。理解并能正确使用它们将有助于编写更高效、更可靠的代码。
283 浏览量
点击了解资源详情
218 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
2631 浏览量
180 浏览量
点击了解资源详情

rzvs8275161
- 粉丝: 2
最新资源
- ASP新闻发布系统功能详解与操作指南
- Angular实践技巧:高效开发指南
- 中控考勤软件无注册类别错误的解决工具
- 实战教程:Android项目如何获取包括SIM卡在内的通讯录
- Pagina个人:搭建个人交互平台的HTML实践
- 创意模仿汤姆猫:熊猫跳舞小游戏动画体验
- 官方发布魔方播放器v1.0:英中字幕翻译与学习工具
- Android实现六边形布局与不规则按钮设计
- 小米SM8250设备通用设备树指南
- ADS8344高精度16位ADC采集程序实现
- 解决SpringMVC入门遇到的404及包缺失问题
- WEB应用程序技术实验室:文本博客网站开发实践
- 远古播放器2010:官网下载最新绿色版
- 企业实战中的代码重构与优化技巧
- PHP构建本地牛津词典及其实现优化
- 流放之路1.0.0e汉化升级与修复指南