1、使用指针遍历数组
通过指针来实现对数组中的元素遍历,查找出数组中的最大值。
1)方法1
#include <stdio.h> int find_max(int arr[], int size) { int max = *arr; // 初始化为第一个元素的值 int *ptr = arr; // 指向数组的第一个元素 for (int i = 1; i < size; i++) { ptr++; // 移动指针到下一个元素 if (*ptr > max) { max = *ptr; // 更新最大值 } } return max; } int main() { int arr[] = {1, 5, 3, 7, 2}; int size = sizeof(arr) / sizeof(arr[0]); int max = find_max(arr, size); printf("Maximum value in the array: %d\n", max); return 0; }
2)方法2
#include <stdio.h> int find_max(int arr[], int size) { int max = arr[0]; // 初始化为第一个元素的值 for (int i = 1; i < size; i++) { if (arr[i] > max) { max = arr[i]; // 更新最大值 } } return max; } int main() { int arr[] = {1, 5, 3, 7, 2}; int size = sizeof(arr) / sizeof(arr[0]); int max = find_max(arr, size); printf("Maximum value in the array: %d\n", max); return 0; }
2、使用指针算术运算遍历数组
通过指针算术来实现对数组中的元素遍历,查找出数组中的最大值。
1)方法1
#include <stdio.h> int find_max(int arr[], int size) { int max = *arr; // 初始化为第一个元素的值 int *ptr = arr; // 指向数组的第一个元素 int *end = arr + size; // 指向数组末尾的下一个位置 while (++ptr < end) { if (*ptr > max) { max = *ptr; // 更新最大值 } } return max; } int main() { int arr[] = {1, 5, 3, 7, 2}; int size = sizeof(arr) / sizeof(arr[0]); int max = find_max(arr, size); printf("Maximum value in the array: %d\n", max); return 0; }
2)方法2
#include <stdio.h> int find_max(int arr[], int size) { int max = arr[0]; // 初始化为第一个元素的值 int *ptr = arr + 1; // 指向数组的第二个元素 int *end = arr + size; // 指向数组末尾的下一个位置 while (ptr < end) { if (*ptr > max) { max = *ptr; // 更新最大值 } ptr++; // 移动指针到下一个元素 } return max; } int main() { int arr[] = {1, 5, 3, 7, 2}; int size = sizeof(arr) / sizeof(arr[0]); int max = find_max(arr, size); printf("Maximum value in the array: %d\n", max); return 0; }
3、递归方法(使用指针)
通过指针方式递归来实现对数组中的元素遍历,查找出数组中的最大值。
#include <stdio.h> int find_max_recursive(int arr[], int size) { // 基本情况:如果只有一个元素,则返回该元素的值 if (size == 1) { return arr[0]; } // 递归步骤:找出剩余数组中的最大值,并与当前元素比较取较大者 int max_rest = find_max_recursive(arr + 1, size - 1); return (arr[0] > max_rest) ? arr[0] : max_rest; } int main() { int arr[] = {1, 5, 3, 7, 2}; int size = sizeof(arr) / sizeof(arr[0]); int max = find_max_recursive(arr, size); printf("Maximum value in the array: %d\n", max); return 0; }