The commonest aggregate type is an array:
int intArray[5], *ip; intArray[2]= 1073; *(intArray + 3)= 1074; ip= &intArray[2]; ... ip[1] == intArray[3] <---- this expression evaluates to 1The declaration reserves 5
char word[3]; word= "hi"; <--- strings are char arrays terminated by '\0' the constant array on the RHS cannot be assigned to wordWhen you pass an array to a function, it sees a pointer, and it doesn't know the size of the array.
int arrayFunc(int *intArray) <------- same as int intArray[]) { int k= 2; return intArray[k]; <-------- same as k[intArray] --- WHY? }
Another important aggregate type is struct. You can read some of Alan Rosenthal's notes on struct