C++ c++与C语言的区别第二讲

//区别④: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语言不可以
    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\n", 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");
}
//区别⑤:struct类型的加强(C++版本)
#include<iostream>
using namespace std;

//C++中所有的变量和函数都必须有类型
//C语言中的默认类型在C++中是不合法的
//f(i){
//    printf("i=%d\n", i);
//}

int go(){
    printf("");
    //错误    1    error C4716 : “go” : 必须返回一个值
    //在c++中,函数定义了返回值类型,那么必须返回对应类型的值,不然会报错
    return 5;
}

//小结:
//在C++中,int f(); 和int f(void)具有相同的意义,都表示返回值为int的无参函数
//C++更加强调类型,任意的程序元素都必须显示指明类型

void main(){
    system("pause");
}
//区别⑤:struct类型的加强(C语言版本)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

//C语言中,函数的形参可以不设置类型,返回值也可以不设置类型
f(i){
    printf("i=%d\n",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个字节\n",sizeof(bool));
    //bool类型占1个字节小大的内存空间
    b = 4; //  类型隐式转换   warning C4305: “=”: 从“int”到“bool”截断
    printf("b=%d\n",b);//打印 1
    b = 0;
    printf("b=%d\n", b);//打印 0
    system("pause");
}
时间: 2024-08-04 19:24:46

C++ c++与C语言的区别第二讲的相关文章

C语言教程:第二讲-C语言的发展历史

上一讲:计算机语言概述 1967年,英国剑桥大学的Martin Richards对CPL(Combined Programming Language)语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言. 1970年,美国贝尔实验室的Ken Thompson以BCPL语言为基础,设计出了一种新的语言,这种新的语言以“BCPL”的第一个字母命名,叫作“B语言”.Ken Thompson还用B语言编写了世界上第一个UNIX操作系统. 197

C++ c++与C语言的区别第一讲

//区别①:实用性增强 #include<iostream> using namespace std; //C语言中的变量都必须在作用域开始的位置定义!! //C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义. void main(){ int a = 1; printf("ddddd"); int kk;//这样定义KK,C语言会在在VC6.0中会报错,在vs2013不会:但是c++却支持这种定义 system("pause"); }

解释性语言和编译性语言的区别

解释性语言和编译性语言的区别 计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序. 翻译的方式有两种,一个是编译,一个是解释.两种方式只是翻译的时间不同. 编译性语言 编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高. 解释性语言 解释则不同

c程序设计语言 pdf(第一版第二版打包下载)

作者: (美)Brian W. Kernighan / (美)Dennis M. Ritchie 出版社: 机械工业出版社 副标题: 第 2 版·新版 原作名: The C Programming Language 译者: 徐宝文 / 李志译 / 尤晋元审校 出版年: 2004-1 页数: 258 定价: 30.00元 装帧: 平装 ISBN: 9787111128069 内容简介 · · · · · · 在计算机发展的历史上,没有哪一种程序设计语言像C语言这样应用广泛.本书原著即为C语言的设计

Java与C语言的区别

Java与c都属于计算机的高级编程语言,都是为了方便人去编写出来东西控制计算机; 不同的是,Java是一种面向对象的语言,c是一门面向过程的语言,打个比方来说,你要给你朋友寄快递,Java的做法是找家快递公司,把快递交给快递公司,告诉快递公司需要送到你朋友所在地中你朋友手里,然后快递公司接到快递之后,会帮我们把快递送到目的地的你朋友的手中,这样我们就完成了我们的操作,这里面的快递公司就相当于一个对象;而对于面向过程的编程语言来说,由于没有对象的概念,所以他需要自己想办法走到你朋友所在的地方,找到

Java与c语言的区别!

Java与c语言的区别!Java与c都属于计算机的高级编程语言,都是为了方便人去编写出来东西控制计算机的.不同的是,Java是一种面向对象的语言,c是一门面向过程的语言.打个比方来说,你要给你朋友寄快递,Java的做法是找家快递公司,把快递交给快递公司,告诉快递公司需要送到你朋友所在地中你朋友手里,然后快递公司接到快递之后,会帮我们把快递送到目的地的你朋友的手中,这样我们就完成了我们的操作,这里面的快递公司就相当于一个对象;而对于面向过程的编程语言来说,由于没有对象的概念,所以他需要自己想办法走

跟我学《JavaScript高程3》 第二讲,课程笔记

跟我学<JavaScript高程3> 第二讲:第3章 课程制作:bling,兴哥,5年Java,3年前端 课程知识:JavaScript.Html.Css 课程目标:前端体系课程,逐步深入,找到一份前端工作 课程大纲:本书目录结构 适合人群:前端初学者,可以0基础,但要认真,踏实 课程回顾 1.静态项目基本结构:html.css.js.images 2.文件的方式引入一个JavaScript脚本文件:引入方式.引入路径 3.变量编写Hello,world:变量的定义,使用变量. 补充:变量在讲

16位汇编第六讲汇编指令详解第二讲

16位汇编第六讲汇编指令详解第二讲 1.比较指令 CMP指令 1.CMP指令是将目的操作数减去源操作数,按照定义相应的设置状态标志 2.CMP指令执行的功能与SUB指令(相减指令)一样,但是不同的是CMP指令之根据结果设置标志位 而不修改值 可以操作的指令格式 CMP reg,imm/reg/mem CMP mem,imm/reg 上面是CMP指令的语法,具体的也可以查询帮助文档,inter手册 inter手册查的办法 第一个框代表了CMP指令的所有语法 比如 reg,reg 表示可以比较寄存器

Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable

原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.所有内容均来自Standford公开课machine