c语言指针遍历数组操作

如何用指针遍历数组解决实际问题
在解决数组问题时应该注意什么

指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分。指针也就是内存地址,指针变量是用来存放内存地址的变量,如何利用指针的特性解决问题

假设有浮点型数组:list[2][5] = { { 3.5, 7.1, 6.0, -9.9, -2.3 }, { 18.2, 1.2, 5.5, 4.8, -3.2 } };
  首先,使用指针遍历数组,并计算出该数组所有元素的最大值、最小值和平均值,分别存储到变量max、min、和average中;
  最后,分3行输出上一步得到的3个值,结果保留3位小数。

#include <stdio.h>

int main() 
{
    float list[2][5] = { { 3.5, 7.1, 6.0, -9.9, -2.3 }, { 18.2, 1.2, 5.5, 4.8, -3.2 } };
    float *p = list[0];    // 指向数组第一行的指针
    float max, min, sum = 0;

    max = *p; min = *p;    // 初始化最大和最小值为数组第一元素

    for(int i=0; i<2; i++) {   // 遍历二维数组的两行
        for(int j=0; j<5; j++) {   // 遍历每行的5个元素
            if(*p > max) max = *p;     // 更新最大值
            if(*p < min) min = *p;     // 更新最小值
            sum += *p;                  // 累加每元素求和
            p++;                       // 指针移到下一元素
        }
    }
    
    float average = sum / 10;        // 求平均值,10个元素
    
    printf("%.3f\n", max);
    printf("%.3f\n", min);
    printf("%.3f\n", average);
}

在解决数组问题时应注意:

  1. 清楚数组的存储结构,确定首元素地址和每个元素占用的空间
  2. 指针的初始化,将指针指向数组的首地址
  3. 指针的移位,根据每个元素的空间大小,移动指针访问各元素
  4. 边界条件的判断,避免指针移出数组访问非法内存指针的特点:1. 指针是一个变量,存储的是内存地址
  5. 可以通过指针间接访问内存中的数据
  6. 指针加减整数,表示指针移位,以访问相邻内存中的数据
  7. 可以对指针进行运算,如比较、赋值等所以,通过初始化指针,将其指向数组首地址,然后移动指针访问各个元素,就可以解决相关的数组问题,如查找最大/最小值、排序、求和等。但也要注意指针的移位不会访问非法内存,这需要清楚数组的存储结构。