随机生成1024个数,存入一段内存,用指针实现获取1024个数的最大数地址,最小数地址
题目:随机生成1024个数,存入一段内存,用指针实现获取1024个数的最大数地址,最小数地址,具体实现如下:
#include<stdlib.h> #include<stdio.h> #include<time.h> int FindMaxMinByIndex(int * pInput, int nLen, int ** ppMax, int ** ppMin) { if (!ppMax) { return 0; } if (!ppMin) { return 0; } if (!pInput) { return 0; } int i = 0; int * pMax = &pInput[0]; int * pMin = &pInput[0]; for (i = 0; i < nLen; i++) { if (*pMax < pInput[i]) { pMax = pInput + i; } if (*pMin > pInput[i]) { pMin = pInput + i; } } *ppMax = pMax; *ppMin = pMin; return 1; } int FindMaxMinByPtr(int * pInput, int nLen, int ** ppMax, int ** ppMin) { if (!pInput || !ppMax || !ppMin) { return 0; } int * pCurPtr = pInput; int * pEndPtr = pInput + nLen; int * pMax = pInput; int * pMin = pInput; for (; pCurPtr < pEndPtr; pCurPtr++) { if (*pMax <*pCurPtr) { pMax = pCurPtr; } if (*pMin > *pCurPtr) { pMin = pCurPtr; } } *ppMax = pMax; *ppMin = pMin; return 1; } int main() { int Data[1024] = { 0 }; int i = 0; srand(time(NULL)); for (i = 0; i < 1024; i++) { Data[i] = rand() % 10; } printf("数据:\n"); for (i = 0; i < 1024; i++) { printf("%d ", Data[i]); } printf("\n"); int * pMax = NULL; int * pMin = NULL; if (FindMaxMinByIndex(Data, 1024, &pMax, &pMin) == 0) { printf("查找失败.\n"); } else { printf("最大数:%d,最小数:%d,最大数地址:%p,最小数地址:%p\n", *pMax, *pMin, pMax, pMin); } if (FindMaxMinByPtr(Data, 1024, &pMax, &pMin) == 0) { printf("查找失败.\n"); } else { printf("最大数:%d,最小数:%d,最大数地址:%p,最小数地址:%p\n", *pMax, *pMin, pMax, pMin); } system("pause"); return 0; }运行效果如图1所示:
图1 运行效果