Mauvaise question. Vous n'êtes pas en se demandant si la variable est définie. Si la variable n'est pas définie alors la compilation échoue. Regardez la différence entre la "déclaration" et "définition". Dans le cas des variables locales, vous avez défini la variable c.
Ce que vous cherchez est l'initialisation. De nombreux compilateurs vais vous mettre en garde sur l'utilisation des variables avant qu'ils ne soient initialisées, mais si vous persistez dans l'exécution de ce code alors l'hypothèse est que vous savez mieux que le compilateur. Et à ce point c'est votre problème. :) Certaines langues (par exemple, Perl) ont un indicateur supplémentaire qui se déplace le long avec une variable de dire si elle a été initialisée ou non, et ils vous cacher qu'il existe un indicateur supplémentaire de la pendaison autour de laquelle vous pouvez ou ne pouvez pas besoin. Si vous voulez, dans C, vous avez besoin de coder vous-même.
Depuis C++ permet la surcharge d'opérateur, c'est relativement facile à mettre en œuvre, dans C++. Boost fournit une "option" modèle " qui est-il, ou vous pouvez rouler votre propre si vous voulez un codage de l'exercice. C n'est pas le concept de la surcharge d'opérateur si (l'enfer, le concept n'existait pas vraiment, et les compilateurs de la journée ne pourrait probablement pas pris en charge de toute façon), de sorte que vous obtenez ce que vous obtenez.
Perl est un cas particulier, car il roule les deux ensemble, mais C n'est pas. Il est tout à fait possible en C les variables qui sont définies mais non initialisé. En effet, il ya beaucoup de cas où nous voulons que ce soit le cas, en particulier lorsque vous commencez à faire des faible niveau d'accès à la mémoire pour des pilotes et des trucs comme ça.