c++是c语言的增强版,但是和c语言之间有何区别呢?

c和c++的区别:

1.全局变量检测增强
int a;
int a=10;

2.函数检测增强,参数类型增强,返回值检测增强,函数调用参数检测增强(参数检测个数)
c中传入的参数与接收的参数可以不同,只是警告,c中你传多少个参数,只有几个接收参数都可以,但是在C++中不可以,有多少个采纳数就接收多少个参数

c中可以不加返回值,警告
但是在c++中都会报错显示出来

3.类型转换检测增强
char *p=(char*) malloc(sizeof(64));//malloc返回值是void*,强制转换(char*)

在c中返回void*,不用强转,在C++中需要强转

4.struct增强

void person(){
int age;
void pulsage(){
age++;
}}

注意:在c语言中struct是不可以加函数的
在C++中struct是可以加函数的

void test(){

struct person p1;//在使用的时候必须加上struct关键字,但是在c++中不加上struct也可以
p1.age=100;
p1.plusage();

}

例子:struct增强:

struct Person
{
int age = ;//在这里是可以直接是申明age的,c是不可以这样的
void plusage() {//在这里是直接可以写一个函数在里面,c是不可以的
age++;//在这里是可以添加一个函数void进来
}
}; int main() {
Person p1;//person结构体用p1来表示
cout << "C++增强版本:" << p1.age << endl;
p1.plusage();//调用结构体里面的函数之后age的值加1
cout << "C++增强版本:" << p1.age << endl;
}

运行结果:

5.bool类型增强,在c语言是没有bool类型,在C++语言中是由bool类型的,非0就是真,sizeof

void  test06(){
bool flag;//默认是1,flag,只有真或者假
cout << "bool类型" << sizeof(flag) << endl;//sizeof,数据类型所占的大小
flag = ;//非0就是1
cout << flag << endl; }

运行结果:

6.三目运算符(c中返回的是值,在c++中返回的是变量)

int a = ;
int b = ;
printf("ret=%d\n", a > b ? a : b);//在c语言和c++都可以 //a > b ? a : b//如果a>b的话,那么该值就是a
//a >b ? a : b = 100;//在这里由于a小于b,所以结果就是b=100,重新被赋值了,在c语言中,这里面是20=100,是不可以这样的,在C++中返回的是变量
(a < b ? a : b)=;//在c++中这个是返回的是变量,a=100.为什么加括号,当成立的时候,a<b成立时直接执行到a:b中的a就好了,不会执行后面的部分,所以不会被赋值
cout << "a="<<a << " b=" << b << endl;//在这里的话就是打印出赋值之后的b的值出来 //如果c语言向模仿这个c++语言来编写的话,那么要加*,c语言
*(a > b ? &a : &b)= ;//通过指针的形式来返回变量进行赋值

c语言中返回的是值,在C++返回的是变量,如果要使用c语言的三目运算符赋值的话,要使用指针*的,才可以对三目运算符进行赋值

7.const增强,c中不能修改,可以用指针的方式,但在C++中是可以修改的

//const强制转化,在c中只能读,常量,不能修改的
//在c语言中,会临时开辟一块内存空间,在c++,const不会分配内存,const int a=100;
const int a = ;//如果放在全局里面,那么受到保护,不可以修改的,并不是真正的常量
printf("a==%d\n", a); //下面是c的指针方式,利用地址来分配临时的内存空间
int *p = (int*)&a;//在c语言中用指针的方式来进行强制转换
*p = ;
printf("a的值=%d\n", *p);
printf("原来的值%d\n", a);
//int arr(a);//不可以初始化数组

运行结果:

const增强,使用extern增强作用域,找到这个值a,新建一个const.cpp文件,代码如下:

c默认是外部链接,c++默认是内部链接

#include  "pch.h"
extern const int a = ;
//加上extern,可以增加作用域,C++的const默认是内部链接

main方法代码如下:

int  main() {

    extern  const int  a;//取外面找a,a是全局作用域
printf("a的值是%d\n", a);
}

const分配内存

/*
1.const分配内存,取地址会分配临时内存
2.extern编译器也会给const分配内存

3,普通常量重新初始化const变量也会被赋值

*/

    const  int  m_a = ;
int *p = (int*)&m_a;//会分配临时内存 //普通变量初始化const变量也会分配内存 int f = ;
const int b =f;//这个时候也会分配内部空间 printf("b的值%d\n", b);
int *q = (int*)&b;
*q = ;
cout << "指针分配内存之后:" << *q << endl;

实例:

#include  <string>//引入string的时候,要加上这句
//定义一个结构体呀
struct Person1{
int agg ;
string p_name;
};
//string来分配内存空间
//用指针来取值呀
const Person1 p1;//将person结构体赋值给p1
Person1 *s = (Person1*)&p1;//把这个变量的地址拿过来,强制转化成结构体
(*s).agg = ;//*s是一个结构体变量,可以读这个结构体属性进行赋值
s->p_name = "yunxin";//s指向的是指针,指针指向name进行赋值操作
cout << "之后的age结果是:" << (*s).agg << "名字是:" << s->p_name << endl;

运行结果:

#define max=100;//宏常量不重视作用域,undef max 卸载
const int m = 100;//尽量用const替换上面的宏

C++入门篇二的更多相关文章

  1. 【SSRS】入门篇(二) -- 建立数据源

    原文:[SSRS]入门篇(二) -- 建立数据源 通过 [SSRS]入门篇(一) -- 创建SSRS项目 这篇,我们建立了一个SSRS项目: 接下来,我们以 AdventureWorks2012 示例 ...

  2. 学习笔记-CCS-MSP430F5529[快速入门篇二]

    由于2021的全国电赛延期了,从今天开始打算好好整理一下使用CCS编程的经验,本篇笔记会好好整理一下我备赛期间用CCS写的程序,包括外部中断,定时器部分的定时中断,定时器输入捕获,PWM波输出,UAR ...

  3. 无责任Windows Azure SDK .NET开发入门篇二[使用Azure AD 进行身份验证-2.2身份验证开发]

    2.2身份验证开发 在我们的案例中,我们是用户通过Web应用程序进行身份识别. 上面的图示说明了如下的一些概念 l Azure AD 是标识提供程序,负责对组织的目录中存在的用户和应用程序的标识进行验 ...

  4. 无责任Windows Azure SDK .NET开发入门篇二[使用Azure AD 进行身份验证]

    二.使用Azure AD进行身份验证 之所以将Azure AD 作为开始,是应为基本上我们所有应用都需要进行安全管理.Azure Active Directory (Azure AD) 通过以下方式简 ...

  5. 无责任Windows Azure SDK .NET开发入门篇二[使用Azure AD 进行身份验证--2.1使用Azure AD需要了解几个概念]

    2.1使用Azure AD需要了解几个概念 l Azure AD目录 当你注册 Microsoft 云服务时,便会获得一个 Azure AD 目录.你可根据需要创建更多的目录.例如,可以将第一个目录保 ...

  6. Android攻城狮学习笔记—入门篇二

    第七章  跑马灯 activity_main.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/an ...

  7. opengl入门篇二: 索引缓冲对象EBO

    在绘制图形的过程中,顶点可能会重复.比如两个三角形组成了四边形,那么,必然有两个点是重复的.因此采用索引的方式,四个点即可描述四边形. // 四个顶点 GLfloat vertices[] = { / ...

  8. 【SSRS】入门篇(三) -- 为报表定义数据集

    原文:[SSRS]入门篇(三) -- 为报表定义数据集 通过前两篇文件 [SSRS]入门篇(一) -- 创建SSRS项目 和 [SSRS]入门篇(二) -- 建立数据源 后, 我们建立了一个SSRS项 ...

  9. Linux入门篇(二)——文件

    这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...

随机推荐

  1. 让linux启动更快的方法

    导读 进行 Linux 内核与固件开发的时候,往往需要多次的重启,会浪费大把的时间. 在所有我拥有或使用过的电脑中,启动最快的那台是 20 世纪 80 年代的电脑.在你把手从电源键移到键盘上的时候,B ...

  2. PHP整洁之道

    摘录自 Robert C. Martin的Clean Code 书中的软件工程师的原则 ,适用于PHP. 这不是风格指南. 这是一个关于开发可读.可复用并且可重构的PHP软件指南. 并不是这里所有的原 ...

  3. golang数据类型与转换

    一.数值型int(默认值 0) int 整数 32位系统占4个字节(-2^31~2^31-1).64位系统占8个字节(-2^63~2^63-1)uint 32位系统占4个字节(0~2^32-1).64 ...

  4. ABP项目启动及源代码结构

    在整体介绍ABP项目之前我们需要从官方网站下载模板项目,下载以后放到一个本地目录下,启动VS打开源代码.具体下载的步骤如下: 一   创建ABP项目模板 1 进入官方网站然后选择特定的样板项目. 2 ...

  5. UIAutomator简介

    简介 Android 4.3发布的时候包含了一种新的测试工具–uiautomator,uiautomator是用来做UI测试的.也就是普通的手工测试,点击每个控件元素 看看输出的结果是否符合预期.比如 ...

  6. 前端基础之BOM和DOM(响应式布局、计时器、搜索框、select联动)

    一.BOM和DOM JavaScript分为 ECMAScript,DOM,BOM. BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进 ...

  7. Django 路由系统

    Django 路由系统 基本格式 from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 参数说 ...

  8. 爬虫,基于request,bs4 的简单实例整合

    简单爬虫示例 爬取抽屉,以及自动登陆抽屉点赞 先查看首页拿到cookie,然后登陆要携带首页拿到的 cookie 才可以通过验证 """""" ...

  9. this指针详解

    什么是this this是一个const指针,存的是当前对象的地址,指向当前对象,通过this指针可以访问类中的所有成员. 当前对象是指正在使用的对象,比如a.print(),a就是当前对象. 关于t ...

  10. HashMap初认识

    什么是HashSet? 它实现了Set接口,HashSet是Set集合的子类 有哈希表支持的,元素不可重复的哈希码值(实际上是一个HashMap的实例). 它不保证set的迭代顺序(遍历元素的顺序), ...