函数与数组
函数基础
函数是一段可重用的代码块,用于执行特定任务。函数可以提高代码的可读性和可维护性。
// 函数定义示例
int add(int a, int b) {
return a + b;
}
void greet(string name) {
std::cout << "你好," << name << "!" << std::endl;
}
int main() {
int result = add(5, 3);
std::cout << "5 + 3 = " << result << std::endl;
greet("张三");
return 0;
}
int add(int a, int b) {
return a + b;
}
void greet(string name) {
std::cout << "你好," << name << "!" << std::endl;
}
int main() {
int result = add(5, 3);
std::cout << "5 + 3 = " << result << std::endl;
greet("张三");
return 0;
}
函数参数
函数可以接受不同类型的参数,包括值传递、引用传递等。
// 值传递
void swapByValue(int a, int b) {
int temp = a;
a = b;
b = temp;
}
// 引用传递
void swapByReference(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
// 默认参数
void printMessage(string message, int count = 1) {
for (int i = 0; i < count; i++) {
std::cout << message << std::endl;
}
}
void swapByValue(int a, int b) {
int temp = a;
a = b;
b = temp;
}
// 引用传递
void swapByReference(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
// 默认参数
void printMessage(string message, int count = 1) {
for (int i = 0; i < count; i++) {
std::cout << message << std::endl;
}
}
函数重载
函数重载允许定义多个同名函数,只要它们的参数列表不同。
// 函数重载示例
int max(int a, int b) {
return (a > b) ? a : b;
}
double max(double a, double b) {
return (a > b) ? a : b;
}
int max(int a, int b, int c) {
return max(max(a, b), c);
}
int max(int a, int b) {
return (a > b) ? a : b;
}
double max(double a, double b) {
return (a > b) ? a : b;
}
int max(int a, int b, int c) {
return max(max(a, b), c);
}
数组基础
数组是存储相同类型元素的集合,通过索引访问元素。
// 数组声明和初始化
int numbers[5]; // 声明一个包含5个整数的数组
int scores[] = {90, 85, 78, 92, 88}; // 初始化数组
double prices[3] = {10.5, 20.3, 15.8};
// 访问数组元素
std::cout << "第一个分数:" << scores[0] << std::endl;
std::cout << "第三个分数:" << scores[2] << std::endl;
// 遍历数组
for (int i = 0; i < 5; i++) {
std::cout << scores[i] << " ";
}
std::cout << std::endl;
int numbers[5]; // 声明一个包含5个整数的数组
int scores[] = {90, 85, 78, 92, 88}; // 初始化数组
double prices[3] = {10.5, 20.3, 15.8};
// 访问数组元素
std::cout << "第一个分数:" << scores[0] << std::endl;
std::cout << "第三个分数:" << scores[2] << std::endl;
// 遍历数组
for (int i = 0; i < 5; i++) {
std::cout << scores[i] << " ";
}
std::cout << std::endl;
数组作为函数参数
数组可以作为参数传递给函数,传递的是数组的首地址。
// 数组作为函数参数
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
int sumArray(int arr[], int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
return sum;
}
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
int sumArray(int arr[], int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
return sum;
}
二维数组
二维数组是数组的数组,用于表示表格或矩阵数据。
// 二维数组示例
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 访问二维数组元素
std::cout << "中心元素:" << matrix[1][1] << std::endl;
// 遍历二维数组
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
std::cout << matrix[i][j] << "\t";
}
std::cout << std::endl;
}
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 访问二维数组元素
std::cout << "中心元素:" << matrix[1][1] << std::endl;
// 遍历二维数组
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
std::cout << matrix[i][j] << "\t";
}
std::cout << std::endl;
}
字符串数组
字符串数组可以存储多个字符串,常用于处理文本数据。
// 字符串数组示例
string fruits[] = {"苹果", "香蕉", "橙子", "葡萄"};
// 遍历字符串数组
for (int i = 0; i < 4; i++) {
std::cout << fruits[i] << std::endl;
}
string fruits[] = {"苹果", "香蕉", "橙子", "葡萄"};
// 遍历字符串数组
for (int i = 0; i < 4; i++) {
std::cout << fruits[i] << std::endl;
}
学习建议
- 理解值传递和引用传递的区别
- 掌握函数重载的使用场景
- 注意数组的边界,避免越界访问
- 学会使用数组作为函数参数
- 理解二维数组的内存布局