const double pi=3.1415927;
Mais personnellement, je préfère utiliser des macro
#define PI (3.1415927)
Le mot clef "static" mis pour une variable locale (à une fonction) signifie que le contenu de ta variable n'est pas perdu lorsque ton programme quitte la fonction et que tu le retrouves tel quel lorsqu'il y revient (par exemple si tu veux programmer un compteur d'appels)
Le mot clef "static" mis pour une fonction signifie que ta fonction ne sera connue que dans ce fichier source. par exemple, si tu travailles sur un gros projet avec plusieurs fichiers sources dont chacun contient les gros éléments du projet, si tu as besoin, pour un source particulier, d'une petite fonction "lambda" ne faisant qu'un truc particulier (un calcul compliqué par exemple), tu peux la déclarer en "static". Cette fonction "lambda" ne sera connue que du source dans lequel elle se trouve et, si tu as une autre fonction "lambda" à faire pour faire un autre truc dans un autre source, tu la mets aussi en "static". Comme cela, les deux fonctions "lambda" (qui ont le même nom mais qui sont chacune locale à leur source) n'iront pas se foutre mutuellement la zone l'une l'autre lorsque le projet sera compilé