C++指针详解:从基础到数组及函数参数
需积分: 0 76 浏览量
更新于2024-08-04
1
收藏 22KB DOCX 举报
"C++指针知识笔记"
C++中的指针是编程中非常重要的一个概念,它允许我们直接操作内存地址,实现高效的数据操作和复杂的数据结构。以下是对标题和描述中涉及的知识点的详细解释:
1. **指向类型的声明**:
在C++中,`*`符号用于声明指针变量。例如,在`int *p`中,`*`表明`p`是一个指针,而`int`是`p`所指向的类型,即`p`指向的内存区域存储的是整型数据。
2. **指针变量的类型**:
指针变量本身的类型是`指针到某种类型`。如`int *p`中,`p`的类型是`int*`,即指向整型的指针。
3. **使用指针访问变量**:
在`void test()`函数中,`int num = 10; int *p = # cout << *p << endl;`这段代码展示了如何通过指针访问变量。`*p`是解引用操作,它返回`p`所指向的变量的值,所以`cout << *p`会打印出`num`的值。
4. **指针数组和数组指针**:
在`void test0()`函数中,`char *arry[2]`定义了一个包含两个元素的指针数组,每个元素都是一个字符指针。`arry`是一个数组,它的每个元素都可以指向一个字符串。`*(arry[i]+1)`访问了字符串的第二个字符。
5. **数组的地址**:
`void test1()`函数展示了数组的地址操作。`arr`是一个数组,`arr`代表数组首元素的地址,`&arr+1`则是整个数组的地址加上一个数组长度,因为数组在内存中是连续存储的。
6. **数组指针**:
在`void test2()`中,`int (*p)[5] = &arr;`声明了`p`为一个指向含有五个整数的数组的指针,`*p`表示数组的首元素地址,`*p+2`则是数组的第三个元素地址,`*(*p+2)`解引用后得到数组的第三个元素值。
7. **二维数组与数组指针**:
在`void test3()`中,`int (*p)[3] = arr;`声明了`p`为指向包含三个整数的数组的指针,这与二维数组的第一行相等。`*(p+1)+1`指向了二维数组的第二行的第二个元素的地址,`*(*(p+1)+1)`则获取该元素的值。
8. **指针作为函数参数**:
当指针作为函数参数时,可以修改函数外部的变量。例如,`void setNum4_1_`(描述中未给出完整代码),如果传递`num`的地址,函数内部可以通过指针修改`num`的值。传递变量的值给函数不会改变原始变量,因为函数参数是副本。
9. **指针的动态内存分配**:
C++中还可以使用`new`关键字动态分配内存,`delete`释放内存。例如,`int *ptr = new int;`创建了一个新的整型变量,`delete ptr;`则释放了这个变量占用的内存。
10. **指针的比较和操作**:
指针可以进行比较操作,如`==`、`!=`、`<`、`>`等,也可以进行算术运算,如`+`、`-`,但这些操作必须遵循指针的内存地址规则。
以上是C++指针基础知识的总结,包括声明、类型、解引用、数组指针、二维数组和函数参数等方面,对于理解和使用C++指针具有重要意义。
2014-06-12 上传
2020-09-03 上传
2011-12-09 上传
2023-02-27 上传
2023-02-27 上传
2012-01-08 上传
2009-11-14 上传
2010-08-03 上传
Sis7tin
- 粉丝: 1564
- 资源: 5
最新资源
- 掌握压缩文件管理:2工作.zip文件使用指南
- 易语言动态版置入代码技术解析
- C语言编程实现电脑系统测试工具开发
- Wireshark 64位:全面网络协议分析器,支持Unix和Windows
- QtSingleApplication: 确保单一实例运行的高效库
- 深入了解Go语言的解析器组合器PARC
- Apycula包安装与使用指南
- AkerAutoSetup安装包使用指南
- Arduino Due实现VR耳机的设计与编程
- DependencySwizzler: Xamarin iOS 库实现故事板 UIViewControllers 依赖注入
- Apycula包发布说明与下载指南
- 创建可拖动交互式图表界面的ampersand-touch-charts
- CMake项目入门:创建简单的C++项目
- AksharaJaana-*.*.*.*安装包说明与下载
- Arduino天气时钟项目:源代码及DHT22库文件解析
- MediaPlayer_server:控制媒体播放器的高级服务器