• C++ c++与C语言的区别(struct类型的加强,函数-变量类型加强,bool类型)


    //区别④:struct类型的加强(C++版本)
    #include<iostream>
    using namespace std;
    
    //C++中的struct是一个新类型的定义声明
    //c++中结构体的默认访问权限public,和类不同
    struct Teacher{
        //char name[20]="小米";//报错 error C2536: “Teacher::Teacher::name”: 无法指定数组的显式初始值设定项    
        //错误原因:上面这种初始化,同时完成了内存空间的分配和内容的初始化。
        //但是结构体在类型定义的时候并没有分配内存,所以报错,对于int age=1;可能是c++编译器做了特殊处理
        char name[20];
        int age = 1;//在c++中,结构体定义时部分成员变量可以赋初始值(为了和C语言统一,还是别用这种写法了,结构体声明中不要做任何赋值操作//c++可以在结构体内定义函数,C语言不可以
        int getage(){
            return age;
        }
        int r;
        //int s = r*r;   不要做这种危险的定义,因为当定义Teacher变量的时候,便会进行r*r的运算,此时r可能还没有赋值
        //此时的s就是个脏数据,如果后来你需要使用s,此时s不会再次进行r*r的运算,导致你永远取不到正确的s的值
        //最好的办法写一个函数
        int gets(){
            return r*r;
        }
    
    };
    
    void main(){
        //在c++定义结构体,可以使用struct关键字,也可以不使用
        Teacher t2;
        struct Teacher t1;
        printf("age=%d
    ", t1.age);
        system("pause");
    }
    //区别④:struct类型的加强(C语言版本)
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    //C语言的struct定义了一组变量的集合,C编译器并不认为这是一种新的类型
    struct Teacher{
        char name[20];
        //int age=1;  报错:在C语言结构体定义中,不可以赋初始值,
        int age;
        //C语言的结构体里不可以定义函数
        /*int getage(){
            return age;
        }*/
    };
    
    
    void main(){
        //Teacher t1;  在C语言中 ,定义结构体必须使用struct 关键字,因为C编译器并不认为结构体是一种新的类型
        struct Teacher t1;
        system("pause");
    }
    //区别⑤:函数,变量类型加强(C++版本)
    #include<iostream>
    using namespace std;
    
    //C++中所有的变量和函数都必须有类型
    //C语言中的默认类型在C++中是不合法的
    //f(i){
    //    printf("i=%d
    ", i);
    //}
    
    int go(){
        printf("");
        //错误    1    error C4716 : “go” : 必须返回一个值    
        //在c++中,函数定义了返回值类型,那么必须返回对应类型的值,不然会报错
        return 5;
    }
    
    //小结:
    //在C++中,int f(); 和int f(void)具有相同的意义,都表示返回值为int的无参函数
    //C++更加强调类型,任意的程序元素都必须显示指明类型
    
    void main(){
        system("pause");
    }
    //区别⑤:函数,变量类型加强(C语言版本)
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    //C语言中,函数的形参可以不设置类型,返回值也可以不设置类型
    f(i){
        printf("i=%d
    ",i);
    }
    
    int go(){
        printf("");
        //警告 warning C4716: “go”: 必须返回一个值
        //在c中,函数定义了返回值类型,可以不返回对应类型的值,只是编译器会提出警告
    }
    
    //小结:
    //在C语言中,int f();表示返回值为int,接受任意参数的函数
    //int f(void);表示返回值为int的无参函数
    
    void main(){
        //C语言中,从语言编译器并不限制函数f可以接受多少个参数?
        f(1, 2, 3, 4, 5);
        system("pause");
    }
    //区别⑥:bool类型(C++版本)
    #include<iostream>
    using namespace std;
    
    void main(){
        bool b = true;
        printf("bool类型的大小是%d个字节
    ",sizeof(bool));
        //bool类型占1个字节小大的内存空间
        b = 4; //  类型隐式转换   warning C4305: “=”: 从“int”到“bool”截断
        printf("b=%d
    ",b);//打印 1
        b = 0;
        printf("b=%d
    ", b);//打印 0
        system("pause");
    }
  • 相关阅读:
    Spring配置通过动态工厂方法创建的bean
    Spring配置通过静态工厂方法创建的bean
    SpringMVC针对post请求乱码的处理
    SpringMVC的HelloWorld快速入门!
    SpringMVC和Spring的关系
    pageContext、request、session和application区别
    orcale 实现 sql server 里面的表值函数SPLIT
    查询语句有 or 会导致查询速度变慢问题解决
    用谷歌浏览器以及插件 测试接口
    OraCle 记录 实现 sql中的 for xml path ('')
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5574878.html
Copyright © 2020-2023  润新知