1. '*' means a pointer. ie, str is a pointer to a character -- that is holds an address of a character. In this case, the start of a character in a string.
size is how many elements in the array I assume (since you posted no code), by 'the array' I mean how many elements come after the first address pointed to by 'str'.
2. Single quotes means a single character, double quotes is short-hand for an array of single characters -- nul terminated,
Code:
char hello[] = "hello";
Is the same as
Code:
char hello[] = {'h', 'e', 'l', 'l', 'o', '\0'};
3. They're really blue-prints, it's far more convenient to use a blue-print to build something than start from scratch every time.
For example, if you wanted 2 x's, y's, z's in main(),
Code:
int main(void)
{
int x1, x2, y1, y2, z1, z2;
x1 = 5;
x2 = 10;
y1 = 60;
y2 = 50;
z1 = 9;
z2 = 18;
return 0;
}
Hence repeat for n variables.
It's far easier to write,
Code:
struct num_t
{
int x, y, z;
};
int main(void)
{
struct num_t one, two;
one.x = 5;
one.y = 60;
one.z = 9;
two.x = 10;
two.y = 50;
two.z = 18;
return 0;
}
See how only 2 variables compared to 6 were declared in main().
You can then pass the structures to other functions without worrying about what's inside. It turns out to be less typing.