C语言小知识

关键字static的作用是什么?
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:
•在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
•在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
•在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

关键字extern的作用是什么?

extern我用了几次,主要是声明外部变量的作用,我用的也是在头文件中。比如说,你有一个project.c,lib.c,lib.h,三个文件,在lib.h里面有lib.c的变量定义,比如a[4]数组,也就是说这个变量是lib.c的全局变量,当我在project.c文件中要用到的时候,即使a【4】是全局变量,但是也只是在它本文件里面有用,别的文件没法用。但这时project.c要用怎么办呢?在project.c里面改用extern 声明a【4】,他会自动找到别的文件里面的a【4】,这也是为什么如果一个文件有全局变量或者是函数只在本文件里面用的时候要加上static,就是为了防止被别的文件extern声明给弄过去了。extern声明是不分配内存的,只在别的文件中找有没有定义。我做过这样的实验,在文件project.c里面用extern声明a【4】,同时又在lib.c里面extern声明a【4】,这导致在链接的时候提示错误,说没有找到a【4】。所以总的来说extern就是用来使用 别的地方的变量的。

 

问 :关于return的问题,请各位高手指教.
if (nNum>0 && nNum <= 100)
{
  printf("The a is in 0 to 100\n");
  return 0;
 
}

  printf("The a is not in 0 to 100\n") ;

  return 0;
这个程序中在if的大括号里如果没有return 0 这条语句的话,我输入数字5,输出结果是The a is in 0 to 100及The a is not in 0 to 100两条语句,但如果在if的大括号里加上return 0;的话,就只输出The a is in 0 to 100这一句。
不是说用if语句时,不管条件是否满足,都会执行下一条语句的吗?为什么我在if里加了return以后,就不再输出下一句了,功能和if-else一样了,书中也没有详细解释return的,所以我很不明白,请问这里的return到底是怎么返回的啊,
答:return ,看字面意思是“返回”,这个关键字的作用,就是当代码执行到return 时,函数就会立即结束,然后程序跳转到调用该函数的语句后面的代码去执行。在该例子中,if()中的return 0;执行之后,下面的所有代码都不会执行了,所以只会输出一行。
你说“不是说用if语句时,不管条件是否满足,都会执行下一条语句的吗?”的完整表述应该是:if语句执行完毕后,会无条件地执行if语句下面的语句,而不是“下一条”语句。

 

posted @ 2011-11-08 21:23  Cold_water  阅读(285)  评论(0编辑  收藏  举报