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[];
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类型)的更多相关文章
- C语言中有bool类型吗?
之前一直都没有注意到,最近在用C语言写DSP算法时,偶然间发现我函数中定义的bool类型的变量在VC6.0(我主要用它来检查一下语法错误)中编译居然报错了,说是bool类型没有定义.用了这么久的C和C ...
- 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介
[源码下载] 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介 作者:webabcd 介绍不可或缺 Windows Native 之 ...
- JAVA和C语言的区别
java语言和c语言的区别: 1 un 公司推出的Java 是面向对象程序设计语言,其适用于Internet 应用的开发,称为 ...
- 03C++语言对C的增强——实用性、变量检测、struct类型、C++中所有变量和函数都必须有类型、bool类型、三目运算符
1.“实用性”增强 C语言中的变量都必须在作用域开始的位置定义,C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义. 2.C++对c语言register的增强 register关键字 ...
- GO_06:GO语言基础之struct
结构struct 1. Go 中的struct与C中的struct非常相似,并且Go没有class 2. 使用 type <Name> struct{} 定义结构,名称遵循可见性规则(即首 ...
- GO语言基础之struct
结构struct 1. Go 中的struct与C中的struct非常相似,并且Go没有class 2. 使用 type <Name> struct{} 定义结构,名称遵循可见性规则(即首 ...
- C++语言对C的增强(1)——实用性、变量检测、struct类型、C++中所有变量和函数都必须有类型、bool类型、三目运算符
1.“实用性”增强 C语言中的变量都必须在作用域开始的位置定义,C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义. 2.变量检测加强 在C语言中,重复定义多个同名的全局变量是合法的: ...
- C语言学习笔记--struct 和 union关键字
1.struct关键字 C 语言中的 struct 可以看作变量的集合struct中的每个数据成员都有独立的存储空间. 结构体与柔性数组 (1)柔性数组即数组大小待定的数组 (2)C 语言中可以由结构 ...
- OC对象,自动释放池,OC与C语言的区别
在C语言中,编程都是面向过程的编程,每一个代码块都严格按照从上至下的顺序执行,在代码块之间同样也是这样, 但是在OC中往往不是这样,OC和C++.java等语言一样,都是面向对象的编程语言,在代码的执 ...
随机推荐
- Linux时间子系统(十四) tick broadcast framework
一.前言 在内核中,有cpuidle framework可以控制cpu的节电:当没有进程调度到该cpu上执行的时候,swapper进程粉墨登场,将该cpu会被推入到idle状态.当然CPU的idle状 ...
- Linux递归解压缩一个目录下的全部文件
gunzip -r hongchangfirst/data 怎样递归删除那些剩余的非log结尾的文件? 先列出确认一下: find hongchangfirst/data -type f ! -nam ...
- iOS8开发之iOS8的UIAlertController
在iOS8之前用UIActionSheet和UIAlertView来提供button选择和提示性信息,比方UIActionSheet能够这样写: UIActionSheet *actionSheet ...
- Latex学习——长竖线及长括号
Latex学习——长竖线及长括号 文章修改中要求把花括号和竖线变长,查了下发现下面的几种方法: 1.花括号“{ }”变长: \$ \left\{... content...... ...
- 定时登录下载sftp服务器上的某些有规则的文件
[root@1-live duizhangdan]# cat wget.sh #!/bin/bash#定时下载sina sftp服务器上的bak_dir=`date -d"5 day ago ...
- 《Effective Java》读书笔记八(异常)
No57 只针对异常的情况才使用异常 异常应该只用于异常的情况下,它们永远不应该用于正常的控制流. No58 对可恢复的情况使用受检异常,对编程错误使用运行时异常 Java程序设计语言提供了三种可抛出 ...
- js+json用表格实现简单网站左侧导航
闲暇之余,制作一用表格实现的简单的网站导航条,分享给大家.这里的数据基于json格式,学习json的朋友可以参考下. 调用很简单,只要将数据组织成json格式即可:格式如下: window.onlo ...
- PCIE BAR空间
PCIE应用程序编程,首先就要理清PCIE BAR空间到底说的是什么.在PCIE配置空间里,0x10开始后面有6个32位的BAR寄存器,BAR寄存器中存储的数据是表示PCIE设备在PCIE地址空间中的 ...
- modelsim 保存波形文件
1. do文件记录了仿真的过程和加载的各种库. do文件的保存过程: file——>save format——>D:/modeltech_6.5b/examples/run_wave.do ...
- 改变mysql数据库用户的权限
mysql> grant all on *.* to test@'%';Query OK, 0 rows affected (0.00 sec) mysql> flush privileg ...