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等语言一样,都是面向对象的编程语言,在代码的执 ...
随机推荐
- android 自定义ViewSwipeBackHelper,实现左滑结束Activity
https://github.com/Jude95/SwipeBackHelper Git上看到一个基于SwipeBackLayout的实现,可以让我们在使用过程中在不使用物理返回键的情况下舍去了返 ...
- android检测网络连接状态示例讲解
网络的时候,并不是每次都能连接到网络,因此在程序启动中需要对网络的状态进行判断,如果没有网络则提醒用户进行设置 Android连接首先,要判断网络状态,需要有相应的权限,下面为权限代码(Andro ...
- socket概述和字节序、地址转换函数
一.什么是socket socket可以看成是用户进程与内核网络协议栈的编程接口. socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信. socket API是一层抽象的网 ...
- CListCtrl获取列数
CListCtrl获取列数 // m_List是一个CListCtrl CHeaderCtrl* pHeaderCtrl = m_List.GetHeaderCtrl();if(pHeaderCtrl ...
- Python 元组 tuple() 方法
描述 Python 元组 tuple() 方法用于将可迭代对象(字符串.列表.元祖.字典)转换为元组. 语法 tuple() 方法语法: tuple(iterable) 参数 iterable -- ...
- 【iOS开发-56】案例BUG:button的enabled、控件的userInteractionEnabled以及两种提示框UIAlert和UIActionSheet
接上述案例找BUG:[iOS开发-51]案例学习:动画新写法.删除子视图.视图顺序.延迟方法.button多功能使用方法及icon图标和启动页设置 (1)BUG:答案满了就不能再点击optionbut ...
- 支持向量机(SVM):应用实例
SVM 应用实例(人脸识别): from __future__ import print_function from time import time import logging import m ...
- SolrCloud:依据Solr Wiki的译文
本文是作者依据Apache Solr Document的译文.翻译不对或者理解不到位的地方欢迎大家指正!谢谢! Nodes, Cores, Cluster and Leaders Nodes and ...
- bash脚本输入密码不回显问题的解决方法
编写一个bash脚本时,需要用户输入一个密码,方可继续后续流程,但是又要保证用户输入的密码不会被别人看到,因此排除了通过参数将密码传入脚本的方案 不绕圈子,揭晓答案:设置终端状态为“字符不回显”(如果 ...
- Cocos2d-x 3.0final 终结者系列教程03-源代码文件夹说明
话说今天从霍营到回龙观,走到天鑫家园东路.我肋哥去,堵死我啦.7:30出门,9:10还没到回龙观. 北京这交通真是坑爹.回过头想想.怪自己走小路,有时候确实快.可有时候真堵. 堵了35分钟后果断掉头, ...