指针和同名常规变量

在“嵌入式​​C编程”一书的“内存和指针”一章中,Mark Siegesmund给出了以下示例:

void Find_Min_Max( int list[], int count, int * min, int * max){
    for( int i=0, min=255, max=0: i<count; i++){
        if( *min>list[i])
            *min=list[i];
        if( *max<list[i] )
            *max=list[i];
    }
}
// call like this: Find_Min_Max( table, sizeof(table), &lowest, &highest);

如果我正确理解:

  • 表是一个整数数组,
  • 计数是数组的大小
  • 调用时,&lowest和&highest是要存储结果的int变量的地址
  • 函数定义中的int * min和int * max引用指针* min和* max,均指向整数类型
  • 最后一行中定义的最低和最高实际上是指向具有int类型变量的地址的指针

(不能100%确定最后一个。)

在for循环内,他每次都将数组列表中的下一个int与指针* min和* max地址处的内容进行比较,并在必要时更新这些地址处的值。

但是在循环的定义中,他定义了min = 255,max = 0。

在我看来,这好像是两个尚未初始化的全新变量。 那条线不应该

for( int i=0, *min=255, *max=0: i<count; i++){

这是书中的错误还是我误解了?

评论