//区别④: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[];
int age = ;//在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\n", t1.age);
system("pause");
}
//区别④:struct类型的加强(C语言版本)
#include<stdio.h>
#include<stdlib.h>
#include<string.h> //C语言的struct定义了一组变量的集合,C编译器并不认为这是一种新的类型
struct Teacher{
char name[];
//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\n", i);
//} int go(){
printf("");
//错误 1 error C4716 : “go” : 必须返回一个值
//在c++中,函数定义了返回值类型,那么必须返回对应类型的值,不然会报错
return ;
} //小结:
//在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\n",i);
} int go(){
printf("");
//警告 warning C4716: “go”: 必须返回一个值
//在c中,函数定义了返回值类型,可以不返回对应类型的值,只是编译器会提出警告
} //小结:
//在C语言中,int f();表示返回值为int,接受任意参数的函数
//int f(void);表示返回值为int的无参函数 void main(){
//C语言中,从语言编译器并不限制函数f可以接受多少个参数?
f(, , , , );
system("pause");
}
//区别⑥:bool类型(C++版本)
#include<iostream>
using namespace std; void main(){
bool b = true;
printf("bool类型的大小是%d个字节\n",sizeof(bool));
//bool类型占1个字节小大的内存空间
b = ; // 类型隐式转换 warning C4305: “=”: 从“int”到“bool”截断
printf("b=%d\n",b);//打印 1
b = ;
printf("b=%d\n", b);//打印 0
system("pause");
}

C++ c++与C语言的区别(struct类型的加强,函数-变量类型加强,bool类型)的更多相关文章

  1. C语言中有bool类型吗?

    之前一直都没有注意到,最近在用C语言写DSP算法时,偶然间发现我函数中定义的bool类型的变量在VC6.0(我主要用它来检查一下语法错误)中编译居然报错了,说是bool类型没有定义.用了这么久的C和C ...

  2. 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介

    [源码下载] 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介 作者:webabcd 介绍不可或缺 Windows Native 之 ...

  3. JAVA和C语言的区别

    java语言和c语言的区别:                                      1 un 公司推出的Java 是面向对象程序设计语言,其适用于Internet 应用的开发,称为 ...

  4. 03C++语言对C的增强——实用性、变量检测、struct类型、C++中所有变量和函数都必须有类型、bool类型、三目运算符

    1.“实用性”增强 C语言中的变量都必须在作用域开始的位置定义,C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义. 2.C++对c语言register的增强 register关键字 ...

  5. GO_06:GO语言基础之struct

    结构struct 1. Go 中的struct与C中的struct非常相似,并且Go没有class 2. 使用 type <Name> struct{} 定义结构,名称遵循可见性规则(即首 ...

  6. GO语言基础之struct

    结构struct 1. Go 中的struct与C中的struct非常相似,并且Go没有class 2. 使用 type <Name> struct{} 定义结构,名称遵循可见性规则(即首 ...

  7. C++语言对C的增强(1)——实用性、变量检测、struct类型、C++中所有变量和函数都必须有类型、bool类型、三目运算符

    1.“实用性”增强 C语言中的变量都必须在作用域开始的位置定义,C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义. 2.变量检测加强 在C语言中,重复定义多个同名的全局变量是合法的: ...

  8. C语言学习笔记--struct 和 union关键字

    1.struct关键字 C 语言中的 struct 可以看作变量的集合struct中的每个数据成员都有独立的存储空间. 结构体与柔性数组 (1)柔性数组即数组大小待定的数组 (2)C 语言中可以由结构 ...

  9. OC对象,自动释放池,OC与C语言的区别

    在C语言中,编程都是面向过程的编程,每一个代码块都严格按照从上至下的顺序执行,在代码块之间同样也是这样, 但是在OC中往往不是这样,OC和C++.java等语言一样,都是面向对象的编程语言,在代码的执 ...

随机推荐

  1. tcp流协议产生的粘包问题和解决方案

    我们在前面曾经说过,发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体 ...

  2. linux下判断文件和目录是否存在

    1.前言 工作中涉及到文件系统,有时候需要判断文件和目录是否存在.我结合APUE第四章文件和目录,总结一下如何正确判断文件和目录是否存在,方便以后查询. 2.stat系列函数 stat函数用来返回与文 ...

  3. HR面 - 十大经典提问

    1.HR:你希望通过这份工作获得什么? 1).自杀式回答:我希望自己为之工作的企业能够重视质量,而且会给做得好的员工予以奖励.我希望通过这份工作锻炼自己,提升自己的能力,能让公司更加重视我. a.“我 ...

  4. Python 列表 append() 方法

    描述 Python 列表 append() 方法用于在列表末尾追加新的对象. 语法 append() 方法语法: L.append(obj) 参数 obj -- 追加到列表末尾的对象. 返回值 该方法 ...

  5. 怎么在ubuntu中新增一个用户并赋予管理员权限

    用useradd时,并没有创建同名的用户主目录.例子:adduser user1这样他就会自动创建用户主目录,创建用户同名的组.root@ubuntu:~# sudo adduser db[sudo] ...

  6. Webpack中的sourcemap

    Webpack中sourcemap的配置 sourcemap是为了解决开发代码与实际运行代码不一致时帮助我们debug到原始开发代码的技术.尤其是如今前端开发中大部分的代码都经过编译,打包等工程化转换 ...

  7. 每日英语:Hong Kong Lifestyle Strains City's Resources

    Hong Kong's rapacious consumption and waste production is straining its natural resources and could ...

  8. 使用python的email、smtplib、poplib模块收发邮件

    使用python的email.smtplib.poplib模块收发邮件 一封电子邮件的旅程是: MUA:Mail User Agent——邮件用户代理.(即类似Outlook的电子邮件软件) MTA: ...

  9. Spring教程索引

    Spring教程索引 2016-11-15 1 入门 1 概述.深入浅出Spring(一)Spring概述 2 体系结构 3 环境设置 4 Hello World 实例 5 IoC 容器   IoC容 ...

  10. URLConnection格式与用法

    private void getdialog() { final EditText et = new EditText(this); final String workid = this.workid ...