Może mi ktoś wytłumaczyć, bo ja za nic nie rozumiem dlaczego to tak działa? Najpierw kod:
#include <iostream>
#include <cstring>
const int Len = 40;
struct golf{
char fullname[Len];
int handicap;
};
void setgolf(golf &g, const char* name, int hc){
for(unsigned int i=0; i<strlen(name); ++i)
g.fullname[i]=name[i];
g.handicap=hc;
}
void setgolf(golf &g){
std::cin.getline(g.fullname,40);
std::cin >> g.handicap;
}
void showgolf(const golf &g){
std::cout << g.fullname << std::endl;
std::cout << g.handicap;
}
Wywołanie funkcji:
#include <iostream>
#include "golf.h"
int main(){
golf ann;
setgolf(ann);
showgolf(ann);
}
Chodzi o to, że funkcja showgolf wypisuje całą tablicę, zamiast wskaźnika na pierwszy element. Może mi to ktoś wytłumaczyć, bo jak dla mnie to jest irracjonalne, albo jakiś feature, albo ja o czymś nie wiem.