C++ pass array as pointer and increment the pointer to retrieve array data

#include <iostream>
#include <uuid/uuid.h>
#include <ctime>
#include <fstream>
#include <sstream>
#include <chrono>
#include <string.h>

using namespace std;

void retrieveUuid1(char *uuidValue);
char *getTimeNow();

struct BookStruct
{
    int BookId;
    string BookName;
    string BookTitle;
};

void getStructArrayViaRefPointer6(struct BookStruct *bsP);
void retrieveStructArray7();
void displayStructArray8(struct BookStruct *ptr);

int main()
{
    retrieveStructArray7();
    return 0;
}

void retrieveStructArray7()
{
    struct BookStruct arr[100];     
    getStructArrayViaRefPointer6(arr); 
    displayStructArray8(arr);    
    cout << "Finished in retrieveStructArray7() and now is " << getTimeNow() << endl;
}

void displayStructArray8(struct BookStruct *ptr)
{
    for(int i=0;i<100;i++)
    {
        cout<<"Index="<<i<<",Id="<<(ptr+i)->BookId<<",Name="<<(ptr+i)->BookName<<",Title="<<(ptr+i)->BookTitle<<endl;
    }
}

void getStructArrayViaRefPointer6(struct BookStruct *bsP)
{    
    char *uuidValue=(char*)malloc(40);
    for (int i = 0; i < 100; i++)
    {
        bsP->BookId=i*i*i*i;          
        retrieveUuid1(uuidValue);
        bsP->BookName=uuidValue; 
        retrieveUuid1(uuidValue);
        bsP->BookTitle=uuidValue; 
        bsP++;
    } 
    free(uuidValue);
}


void retrieveUuid1(char *uuidValue)
{
    uuid_t newUUID;
    uuid_generate(newUUID);
    uuid_unparse(newUUID, uuidValue);
}

char *getTimeNow()
{
    char *dtValue = (char *)malloc(20);
    time_t rawTime = time(NULL);
    struct tm tmInfo = *localtime(&rawTime);
    strftime(dtValue, 20, "%Y%m%d%H%M%S", &tmInfo);
    return dtValue;
}

Compile

g++ -g -std=c++2a -I. h1.cpp -o h1 -luuid

Run ./h1

原文地址:https://www.cnblogs.com/Fred1987/p/15710366.html