VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > C/C++语言编程 >
  • c语言教程之变量和函数原型的申明

 变量和函数原型的申明
    C 语言中函数的原型申明是被建议的,但调用处后面的函数的确可以不申明。 C++中则不论函数定义的先后,必须事先申明。另一方面,局部变量的定义,C 语 言要求必须在函数体的开始部分,某一语句之后再定义变量是错误的,而 C++则没 有这一限制。
    //void myFunc(void) //C 语言中这句省略不出错 void myFunc(void) //C++语言中这句不能省略
    //|
    //|
    void
    {
    myFunc(void)
    //|
    void
    { //| for (int …… } }
    myFunc(void) //| for (int i=0; i<10; i++) i=0; i<10; i++) { …… } }
    //出错。 定义要放在 for 前面 //C++中不出错
    //| //| //| //|
    int
    {
    main(void)
    //| //| {
    int
    main(void)
    myFunc();
    //| //|
    myFunc();
    =
    int x = 0; //出错。应放在 myFunc();之前 0; //C++中不出错
    //| return x ; //| //| }
    //|
    int x
    return x ;
    }
    三、其它不同点
    C++语言是 C 语言扩展而来,C 程序自然可以直接使用,但的确仍有一些不同 之处。 1. C 语言中,字符常量被当作整数,而 C++语言中不是,字符常量就当作 字符。这虽然很小,但却是重要的一点。 2. C 语言中全局变量多次定义虽不好,却不出错。C++语言中则出错。
    3. C 语言命名限制在 31 个有效字符,C++语言中没有 限制,但太长了使用不方便。 4. C 语言中 main()函数也能被调用,当然这不是好方 法。C++语言中 main()被禁止调用。 5. C 语言中不能取寄存器变量的地址,C++语言中可以。 6. C 语言中没有 bool 类型,wchar_t 是宏定义,C++语言中,增加了 bool 基本类型和 wchar_t 扩展类型。 7. C 语言中用结构体定义变量时,“struct 结构体名 变量名”,在 C++中 “struct”可以省略。
    四、C++语言的新旧版本 语言的新旧版本
    C++语言自身也在发展,新旧版本的写法上也有所不同。小雅的教程并不讨论 语言的发展过程,所以只讲新内容。这也是与时俱进吧。 名字空间是防止名称冲突而申明的“领域”,打个比方,C 盘中文件增多就有可 能有相同的文件名,这样我们就必须用目录来管理,将相同文件名放在不同的目录 里就可以了。当目录名逐渐增加,也有重复名称时,一是再增加父目录,另一办法 就是将相同目录名放在不同的盘符下。有关名字空间后面有专门章节讲解。
    //旧版本的写法 #include  //“.h”不能少 //名字空间是必须的 int
    { …… } main(void)
    //| //|
    //| //新版本的写法 #include  using namespace std;
    //| //| //| //| //| } { ……
    int
    main()
    五、控制台的输入出
    C 语言的控制台输入出是用函数来实现的,最常用的是 printf()和 scanf()函数。 C++语言中一般使用运算符“<<”和“>>”,这比 C 语言中的函数的功能更强大、更方 面,下面只介绍基本使用,更强大的功能要等学完了“类”之后才讲解,这样更容易 理解。 C 语言中运算符“<<”和“>>”是位操作运算符,C++中仍然有效,而用作输入出 时,最前面必须是 cin 或 cout,表示从控制台输入或输出,cin 和 cout 是 C++定义好 的输入出流。输出时当需要回车时,可以用“\n”,也可以用“endl”。
    #include
    #include  using namespace int
    { main ( )
    std;
    int i, j; double d;
    string s;
    i = 10; d = 123.45; s = "quanxue.cn";
    cout << "请输入一个整数:"; cin >> j; cout << "i=" << i << "\n"; cout << "j="; cout << j; cout << endl; cout << "d=" << d << endl; cout << s << endl;
    return
    }
    0;
    一、名字空间的定义
    名字空间除了系统定义的名字空间之外,还可以自己定义,定义名字空间用关 键字“namespace”,使用名字空间时用符号“::”指定。 1. 不指定名字空间的变量或函数都是当前名字空间下的变量或函数。 2. 不定义名字空间的情况下,都属于全局名字空间。 3. 同一个名字空间可以定义多次。
    #include  using namespace std; namespace
    { na
    void
    print(int n) {
    //与名字空间 nb 的函数名相同
    cout << "na::print: " << n << endl; } }
    namespace
    {
    nb
    void
    } }
    print(int n) {
    //与名字空间 na 的函数名相同
    cout << "nb::print: " << n << endl;
    namespace
    {
    na
    //同一个名字空间可以定义多次 int
    b) {
    void
    print2(int a,
    print(a); print(b); } }
    int
    {
    main ( )
    na::print(3); nb::print(4); na::print2(5, 6);
    指定 na 下的 print 函数 指定 na 下的 print 函数 指定 na 下的 print2 函数
    return
    }
    0;
    二、using 的使用
    使用“using namespace”可以使得后面不需要每次指定名字空间,相当于 java 中 的 import 功能。不过,多次使用“using namespace”时,被指定的名字空间同时有效, 很容易冲突。
    #include  using namespace std; namespace
    { na
    void
    } }
    print(int a) {
    cout << "na::print: " << a << endl;
    namespace
    {
    nb
    using namespace na; void print2(int a, int b) { print(a); //na 的函数 print(b); //na 的函数
    }
    //这是 nb 自身的函数
    void
    } }
    print(int n) {
    //这也是 nb 自身的函数
    cout << "nb::print: " << n << endl;
    namespace
    {
    nc
    using nb::print2; //指定只使用 nb 的 print2()函数 void print(int a, int b, int c) { print2(a, b); //这是 nb 的函数 nb::print(c); //using 中没有指定,所以这儿必须用 nb::来指 定
    } }
    int
    {
    main ( )
    using namespace na; print(2); //na 的 print()函数 //using namespace nb; //这样使用时,na 和 nb 同时有效 //print(3); //编译系统不清楚究竟调用 na 和 nb 中的哪一个,因为函数名和参数相同 using namespace
    print(4, 5, 6); nc;
    //这样使用时,na 和 nc 同时有效 //nc 的 print()函数的参数与 na 中的参数不同,
    所以这儿不出错。
    using
    nb::print;
    //指定下面用的 print()函数是 nb 的函数
    print(7);
    return
    }
    0;
相关教程