首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

大家帮忙回答几个小问题,集思广益

2012-03-31 
大家帮忙回答几个问题,集思广益一、下列两者有什么分别?intfoo(void)externintfoo(void)二、下列两个全程

大家帮忙回答几个问题,集思广益
一、下列两者有什么分别?  
int   foo(void);  
extern   int   foo(void);  
二、下列两个全程变量有什么区别?注意这不是局部变量。  
int   a;  
static   int   b;  
三、return   是个函数还是个关键字?  
四、请问预处理器是怎样处理   #include   语句?  
五、为常量、变量等改名字时要注意什么、为函数改名字时又要注意什么?  
六、为什么一般函数的参数数目是固定的,而   printf()、scanf()   等的又没有这个规定?

[解决办法]
一、下列两者有什么分别?
int foo(void);
extern int foo(void);
----------------------------
没区别,函数名前没有任何标识符,默认就是extern

二、下列两个全程变量有什么区别?注意这不是局部变量。
int a;
static int b;
----------------------------
static的变量,不允许在其他头文件或c文件中使用,仅在当前文件可见。

三、return 是个函数还是个关键字?
---------------------------
关键字

四、请问预处理器是怎样处理 #include 语句?
---------------------------
#include 后面一般都是一个头文件名,预处理器会将该头文件直接填充到该位置,即在#include 处展开。

五、为常量、变量等改名字时要注意什么、为函数改名字时又要注意什么?
---------------------------
没改过,不知道

六、为什么一般函数的参数数目是固定的,而 printf()、scanf() 等的又没有这个规定?
---------------------------
因为printf(),scanf()的参数可变。所以用 "... "
[解决办法]
一 int foo(void);--> 定义
extern int foo(void);---> 声明。

二 int a; ---> 作用域是整个工程
static int a ---> 作用域是整个文件。
三.return 是关键字
四. 在编译期间把指定文件的内容包含进当前文件。
五.常量,变量名要遵循min_length && max_information原则常量名一般全部大写。

[解决办法]
我来讲讲我所理解的,不知道对不对:
一、前者为函数声明,该函数的定义部分应该在此声明文件的“可见”范围内,比如#include包含的文档内,或就在此文件内。属于内部函数,会被编译到此文件obj内。
后者为外部函数声明,该函数可能没有定义部分而是实现在dll、lib或obj内。编译时不会提示,链接时需要提供此函数所属obj或lib。
二、全局下我觉得没有区别,听听楼下意见。
三、关键字
四、#include行被替换成所包含的文件内容
五、好记、易懂,常量一般全大写,改的时候最好用替换,全局替换。
六、函数定义时可以使用...省略,函数中使用va_list、va_start、va_arg、va_end配和使用来获取各个参数。包含头stdarg.h
[解决办法]
一、下列两者有什么分别?
int foo(void);
extern int foo(void);
==========================
在多数环境,两者等效,
但是如果是需要外部使用foo函数,建议使用 后面一种形式。


二、下列两个全程变量有什么区别?注意这不是局部变量。
int a;
static int b;
============================
static 限定该全局变量仅在当前文件中可以被访问,
在其他文件中的函数、方法无法访问该全局变量。

三、return 是个函数还是个关键字?
==================
return 是标准定义的 关键字


四、请问预处理器是怎样处理 #include 语句?
=====================
在include 位置展开所指定的文件


五、为常量、变量等改名字时要注意什么、为函数改名字时又要注意什么?
===============================
一些基本的准则,
比如符合一些命名法则等。


六、为什么一般函数的参数数目是固定的,而 printf()、scanf() 等的又没有这个规定?
=========================
printf 等使用可变参数技术,所以其参数是可变的。
参看 可变参数 技术资料。【Google一下即可】

热点排行