C++指针:函数地址与实参理解

需积分: 12 3 下载量 163 浏览量 更新于2024-07-13 收藏 2.03MB PPT 举报
本篇C++课程讲义主要讨论了指针的概念及其在编程中的应用。首先,指针被定义为内存中变量地址的别名,它允许程序员直接或间接访问内存中的数据。在C++中,每种数据类型(如字符型、整型)在内存中都有固定大小的存储空间,并且每个存储单元都有唯一的地址,这些地址可以通过指针来操作。 1. **指针概念**:指针是一种特殊的变量,存储的是其他变量的内存地址。它提供了一种间接访问内存的方式,允许程序员通过指针操作变量值。例如,通过`&i`操作符获取变量`i`的地址,存储在指针变量`i_point`中。 2. **指针类型**:在C++中,定义指针变量时,需要指定指针所指向的数据类型。例如,`int *i_point;`声明了一个可以存放整型地址的指针变量`i_point`。同时,需要注意的是,一个指针变量必须与它指向的变量类型匹配,比如整型指针不能指向浮点型变量。 3. **指针赋值和操作**:指针变量不仅可以用来存储地址,还可以通过解引用操作符`*`来访问存储在该地址上的值。如`*i_point = 3;`这行代码表示将整数值3存储到`i`变量的地址上。同时,`*p1`和`*p2`分别表示`p1`和`p2`指向的`a`和`b`的值。 4. **非法操作示例**:在代码示例中,错误地将整数值`100`赋给了整型指针`p`,这是不合法的,因为指针应存储地址而非数值。正确的做法是将地址赋给指针,如`p = &i`,而不是`p = 100`。 5. **引用与指针的区别**:虽然`&`用于获取地址,但`&`在引用中代表别名,而在指针中表示地址。例如,`&i`是变量`i`的地址,而`p1 = &a`则是将`a`的地址赋给`p1`。 6. **间接访问和直接访问**:程序中可以直接访问变量(如`cin>>i;`),这是直接访问;也可以先将变量地址存储在指针中,再通过指针间接访问(如`*p1`读取`a`的值)。 理解并掌握指针是C++编程中的重要基础,因为它提供了强大的内存管理和灵活性,尤其是在处理复杂数据结构和函数调用时。