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等语言一样,都是面向对象的编程语言,在代码的执 ...
随机推荐
- Python练习笔记——采用生成器函数实现两数之间的偶数计算
题目:编写一个生成器函数myeven(start, end),采用迭代器逐次实现[start, end)范围内的偶数计算2 4 6 8. ... def myeven(start, end): whi ...
- JMeter学习-内存溢出解决方法
现象:使用jmeter进行压力测试时遇到一段时间后报内存溢出outfmenmory错误,导致jmeter卡死了 方法一: windows环境下,修改jmeter.bat: set HEAP=-Xms2 ...
- hdu 1853 Cyclic Tour 最大权值匹配 全部点连成环的最小边权和
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1853 Cyclic Tour Time Limit: 1000/1000 MS (Java/Others) ...
- Latex中定义、定理、引理、证明 设置方法总结
Latex中定义.定理.引理.证明 设置方法总结 在LaTex中需要有关定理.公理.命题.引理.定义等时,常用如下命令 \newtheorem{定理环境名}{标题}[主计数器名] \newtheore ...
- Spring mvc中DispatcherServlet详解
简介 DispatcherServlet是前端控制器设计模式的实现,提供SpringWebMVC的集中访问点,而且负责职责的分派,而且与spring IOC容器无缝集成,从而可以获得Spring的优势 ...
- .net程序调试一:快速定位异常
作为一个程序员,解BUG是我们工作中常做的工作,甚至可以说解决问题能力是一个人工作能力的重要体现.因为这体现了一个程序员的技术水平.技术深度.经验等等. 那么在我们解决BUG的过程中,定位问题是非常重 ...
- paip.提升性能--多核编程中的java .net php c++最佳实践 v2.0 cah
paip.提升性能--多核编程中的java .net php c++最佳实践 v2.0 cah 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax ...
- 【Android】4.2 资源限定符和可视化选项
分类:C#.Android.VS2015:创建日期:2016-02-06 在设计界面中,所有资源都可以被限定为使用哪个国家或地区的语言.例如,将字符串资源限定为默认使用中文等. 将字符串资源限定为默认 ...
- [leetcode] Longest Palindromic Substring 多种解法
非常经典的题目,求字符串中的最长回文子串. (1)最朴素的解法 ---暴力 复杂度O(N³) 这也是最easy想到的方法.最外层循环枚举起点i,第二层循环从i+1開始向后枚举,第三层推断是不是回文串. ...
- C中fread()函数的返回值
这个问题很容易搞错,并导致很多问题,需要强调的是fread函数返回的并不是字节数. realRead = fread(buf,item,count,fp) (每次读item大小的数据块,分cou ...