【原创】C语言中如何判断指针已经指向了数组的末尾?

blogdaren 2020-08-26 抢沙发 58人次

问题背景:

1、如题所示,传统遍历数组的话,我们肯定是需要随时携带数组的长度参数以达到遍历数组的目的;

2、注意本文作者仅仅只是演示如何只借助指针来实现遍历数组,而无需携带数组长度参数,两种方法并不冲突;

解决方案:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define SIZE 3

struct book
{
    char *name;
    int number;
};

typedef struct book Book;
void showBook(Book *pbook, Book *pbook2);

int main()
{
    Book *pbook;
    Book data[SIZE];
    int i;

    for(i = 0; i < SIZE; i++)
    {
        data[i].name = (char*)malloc(sizeof(char));
        printf("请输入第%d套书籍的名称:", i+1);
        scanf("%s", data[i].name);
        printf("请输入第%d套书籍的数量:", i+1);
        scanf("%d", &data[i].number);
    }

    puts("********打印书籍列表*******");

    showBook(data, data + sizeof(data)/sizeof(data[0]));

    return 0;
}

void showBook(Book *pbook, Book *pbook2)
{
    int j = 1;
    while(1)
    {
        printf("第%d套书的名称和数量分别是: %8s (共%d本)\n", j, pbook->name, pbook->number);
        pbook++;
        j++;

        if(pbook >= pbook2) break;
    }
}

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:【原创】C语言中如何判断指针已经指向了数组的末尾?

发表评论:

您的昵称:
电子邮件:
个人主页: