指针数组和数组指针的应用案例
1. 指针数组应用:查找最长字符串
用指针数组存储若干字符串,编写函数找出其中最长的字符串(若有多个,返回第一个)。
#include <stdio.h>
#include <string.h>// 函数原型:找出最长字符串
const char* findLongestString(const char* arr[], int size);int main() {// 定义并初始化指针数组const char* strings[] = {"apple","banana","cherry","date","elderberry"};int size = sizeof(strings) / sizeof(strings[0]); // 计算数组大小// 调用函数查找最长字符串const char* longest = findLongestString(strings, size);// 输出结果if (longest != NULL) {printf("最长的字符串是: %s\n", longest);} else {printf("数组为空!\n");}return 0;
}// 函数实现:找出最长字符串
const char* findLongestString(const char* arr[], int size) {if (size <= 0) return NULL; // 处理空数组const char* longest = arr[0]; // 初始化最长字符串为第一个元素for (int i = 1; i < size; i++) {if (strlen(arr[i]) > strlen(longest)) {longest = arr[i]; // 更新最长字符串}}return longest;
}
题目2、
数组指针应用:二维数组求和
题目:用数组指针作为函数参数,求一个M行N列二维数组的所有元素之和。
#include <stdio.h>// 函数声明:使用数组指针计算二维数组元素之和
int sumArray(int (*arr)[5], int rows);int main() {// 定义并初始化一个3行5列的二维数组int arr[3][5] = {{1, 2, 3, 4, 5},{6, 7, 8, 9, 10},{11, 12, 13, 14, 15}};// 调用函数计算总和int total = sumArray(arr, 3);// 输出结果printf("二维数组所有元素之和为: %d\n", total);return 0;
}// 函数定义:通过数组指针访问二维数组元素并求和
int sumArray(int (*arr)[5], int rows) {int sum = 0; // 初始化累加和为0// 外层循环遍历每一行for (int i = 0; i < rows; i++) {// 内层循环遍历当前行的每一列元素for (int j = 0; j < 5; j++) {// 累加当前元素的值到总和sum += arr[i][j]; // 等价于 *(*(arr+i)+j)}}return sum; // 返回计算结果
}