описывает целое i, указатель ip
В качестве примера, описание
int i; int *ip; int f (); int *fip (); int (*pfi) ();
описывает целое i, указатель ip на целое, функцию f, возвращающую целое, функцию fip , возвращающую указатель на целое, и указатель pfi на функцию, возвращающую целое. Особенно полезно сравнить последние две. Цепочка *fip() есть *(fip()), как предполагается в описании, и та же конструкция требуется в выражении, вызов функции fip, и затем косвенное использование результата через (указатель) для получения целого. В описателе (*pfi)() внешние скобки необходимы, поскольку они также входят в выражение, для указания того, что функция получается косвенно через указатель на функцию, которая затем вызывается; это возвращает целое. Функции f и fip описаны как не получающие параметров, и fip как указывающая на функцию, не получающую параметров.
Описание
const a = 10, *pc = a, *const cpc = pc; int b, *const cp = b
описывает a: целую константу, pc: указатель на целую константу, cpc: константный указатель на целую константу, b: целое и cp: константный указатель на целое. Значения a, cpc и cp не могут быть изменены после инициализации. Значение pc может быть изменено, как и объект, указываемый cp. Примеры недопустимых выражений :
a = 1; a++; *pc = 2; cp = a cpc++;
Примеры допустимых выражений :
b = a; *cp = a; pc++; pc = cpc;
Описание
fseek (FILE*,long,int);
описывает функцию, получающую три параметра специальных типов. Поскольку тип возвращаемого значения не определен, принимается, что он int (). Описание
point (int = 0,int = 0);
описывает функцию, которая может быть вызвана без параметров, с одним или двумя параметрами типа int. Например
point (1,2); point (1) /* имеет смысл point (1,0); */ point () /* имеет смысл point (0,0); */
Описание
printf (char* ... );
описывает функцию, которая может быть вызываться с различными числом и типами параметров. Например
printf ("hello, world"); printf ("a=%d b=%d",a,b); printf ("string=%s",st);
Однако, она всегда должна иметь своим первым параметром char*.
В качестве другого примера,
float fa[17], *afp[17];
описывает массив чисел с плавающей точкой и массив указателей на числа с плавающей точкой. И, наконец,
static int x3d[3][5][7];
описывает массив целых, размером 3x6x7. Совсем подробно: x3d является массивом из трех элементов; каждый из элементов является массивом из пяти элементов; каждый из последних элементов является массивом из семи целых. Появление каждое из выражений x3d, x3d[i], x3d[i][j], x3d[i][j][k] может быть приемлемо. Первые три имеют тип "массив", последний имеет тип int.