指向数组的指针++

for(ps = stus; ps < stus+len; ps++)
ps++ 内存空间偏移量为一个数组元素大小;
stus+len 大小为stus加上len*每个数组元素大小

点击查看代码
#include <stdio.h>

struct stu{
    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //所在小组
    float score;  //成绩
}stus[] = {
    {"Zhou ping", 5, 18, 'C', 145.0},
    {"Zhang ping", 4, 19, 'A', 130.5},
    {"Liu fang", 1, 18, 'A', 148.5},
    {"Cheng ling", 2, 17, 'F', 139.0},
    {"Wang ming", 3, 17, 'B', 144.5}
}, *ps;

int main(){
    //  数组成员个数
    int len = sizeof(stus) / sizeof(struct stu);
	
	
	
    printf("Name\t\tNum\tAge\tGroup\tScore\t\n");
	
	
	
    for(ps = stus; ps < stus+len; ps++){                  // 关注这句话  关注这句话  关注这句话  关注这句话
		
        printf("%s\t%d\t%d\t%c\t%.1f\n", ps->name, ps->num, ps->age, ps->group, ps->score);
    
	}

    return 0;
}



// ----------------------------------------------------------------------------------------
#include <stdio.h>

struct stu{
    char *name;  //姓名
    int num;  //学号
    int age;  //年龄
    char group;  //所在小组
    float score;  //成绩
}stus[] = {
    {"Li ping", 5, 18, 'C', 145.0},
    {"Zhang ping", 4, 19, 'A', 130.5},
    {"He fang", 1, 18, 'A', 148.5},
    {"Cheng ling", 2, 17, 'F', 139.0},
    {"Wang ming", 3, 17, 'B', 144.5}
};

void average(struct stu *ps, int len);

int main(){
    int len = sizeof(stus) / sizeof(struct stu);
    average(stus, len);
    return 0;
}

void average(struct stu *ps, int len){
    int i, num_140 = 0;
    float average, sum = 0;
	
	
    for(i=0; i<len; i++){
		
        sum += (ps + i) -> score;
        if((ps + i)->score < 140) num_140++;
    
	}
    printf("sum=%.2f\naverage=%.2f\nnum_140=%d\n", sum, sum/5, num_140);


}



posted @ 2022-07-29 17:19  我爱茜茜公主  阅读(55)  评论(0)    收藏  举报