1. C++指针与函数入门:易错点深度解析
指针是C++中最强大也最容易出错的概念之一。很多初学者在考试和实际编程中都会在指针使用上栽跟头。让我们从一个基础但典型的例子开始:
cpp复制#include <iostream>
using namespace std;
int main() {
double num;
cin >> num;
// 分离整数和小数部分
int intPart = (int)num;
double fracPart = num - intPart;
// 提取小数部分的数字(一位)
int digit_frac = (int)(fracPart * 10 + 1e-6); // 加微小量防误差
// 翻转整数部分
int reversedInt = 0;
int temp = intPart;
while (temp > 0) {
reversedInt = reversedInt * 10 + temp % 10;
temp /= 10;
}
// 输出
cout << digit_frac << '.' << reversedInt << endl;
return 0;
}
这段代码展示了几个关键点:
-
强制类型转换:
(int)num是C风格的强制转换,它会直接截断小数部分。在C++中更推荐使用static_cast<int>(num),这样更安全且意图更明确。 -
浮点数精度处理:
+1e-6是为了解决浮点数存储误差问题。比如3.999999在计算机中可能存储为3.999998,乘以10后得到39.99998,直接取整会得到39而不是期望的40。 -
整数翻转算法:通过不断取模和除法来逐位提取数字,这是处理数字位操作的经典方法。
1.1 指针基础与常见错误
指针的核心概念是"间接访问"。理解指针的关键在于区分指针本身和它指向的值:
cpp复制int val = 42;
int *p = &val; // p存储val的地址
cout <<
