当前位置: 首页 > news >正文

番禺网站(建设信科网络)网络推广合作资源平台

番禺网站(建设信科网络),网络推广合作资源平台,南京酒店网站制作,网站建设和注册前言 在学习了C语言的基础上&#xff0c;C到底和C有什么区别呢&#xff1f; 1.1 第一个C程序 #include <iostream>// 使用名为std的命名空间 using namespace std;int main() {// printf ("hello world\n");// cout 标准输出 往屏幕打印内容 相当于C语言的…

前言

在学习了C语言的基础上,C++到底和C有什么区别呢?

1.1 第一个C++程序

#include <iostream>// 使用名为std的命名空间
using namespace std;int main()
{// printf ("hello world\n");// cout 标准输出  往屏幕打印内容  相当于C语言的 printf// << 左移操作符,在这里它的功能被改造,代表数据流向// << 代表数据从右端移到左端 右端是 "hello world"字符串,左端是 cout 标准输出// 所以 cout << "hello world" 代表将内容打印到标准输出// endl 代表换行,相当于 C语言的 '\n'// << 操作符可以连着使用cout << "Hello World!" << endl;return 0;
}

运行结果:
在这里插入图片描述

1.2 命名空间

1.2.1 为什么引入命名空间

  • 命名空间将全局作用域分成不同的部分
  • 不同命名空间中的标识符可以同名而不会发生冲突
  • 命名空间可以相互嵌套
  • 全局作用域也叫默认命名空间

1.2.2 怎么使用命名空间

(1)命名空间的定义

namespace 是C++中的关键字,用来定义一个命名空间,语法格式为:

namespace name {变量函数类
}

name是命名空间的名字,它里面可以包含变量、函数、类、typedef、#define 等,最后由{ }包围

例如:
定义一个命名空间,名字叫NameSpaceA

namespace NameSpaceA
{int a = 0;
}

命名空间的定义可以嵌套,例如:

namespace NameSpaceB
{int a = 1;namespace NameSpaceC{struct Teacher{char name[10];int age;};}
}

(2)命名空间的使用

  • 使用域解析符 ::
    ::是一个新符号,称为域解析操作符,在C++中用来指明要使用的命名空间。
NameSpaceA::a = 10;   // 使用命名空间 NameSpaceA中的变量a
NameSpaceB::a = 20;   // 使用命名空间 NameSpaceB中的变量aprintf ("%d, %d\n", NameSpaceA::a, NameSpaceB::a);

使用命名空间B中的命名空间C中的结构体 Teacher

NameSpaceB::NameSpaceC::Teacher t2 = {"xiaoming", 20};
  • 使用using声明
    在这里用using声明了 NameSpaceA::a, 它的意思是在声明以后的程序中如果出现未指明命名空间的a,就使用NameSpaceA命名空间里的a,如果要使用NameSpaceB命名空间中的a,则仍需要使用这样的方式 NameSpaceB::a;
using NameSpaceA::a;
a = 20;                // 使用命名空间NameSpaceA中的a
NameSpaceB::a = 30;    // 使用命名空间NameSpaceB中的a

using 声明不仅可以针对命名空间中的变量或者函数,还可以对整个命名空间进行声明,这样的方式声明命名空间以后,在后面使用未指定具体命名空间的变量或者函数产生命名冲突的时候,默认使用 NameSpaceB中的变量和函数。

using namespace NameSpaceB;
a = 10;printf ("%d\n", NameSpaceB::a);

示例代码:

#include <iostream>namespace A
{int a = 1;void print(){std::cout << "this is namespace A" << std::endl;     //::作用域限定符}
}namespace B
{int a = 2;void print(){std::cout << "this is namespace B" << std::endl;}
}int main()
{//std::cout << a << std::endl;   //a不是全局变量也不是main函数局部变量 所以未定义std::cout << A::a << std::endl;using namespace B;std::cout << a << std::endl;print();A::print();//using namespace A;// 这里如果不注释掉,编译不通过print();return 0;	
}

在这里插入图片描述

1.3 register关键字的变化

  • register关键字请求“编译器”将局部变量存储于寄存器中;
  • C语言中无法取得register变量地址
  • 在C++中依然支持register关键字
    1、C++编译器有自己的优化方式,不使用register也可能做优化
    2、C++中可以取得register变量的地址
  • C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效。
#include <stdio.h>int main()
{register int i = 0;    //声明寄存器变量 不能取地址for (i = 0; i < 1000; i++);&i;     //C++  对寄存器变量取地址 register 关键字变得无效return 0;
}

1.4 变量检测加强

  • 在C语言中重复定义多个全局变量是合法的,这些同名的全局变量最终都会被链接全局数据区的同一个地址空间上
  • 在C++中不允许定义多个同名的全局变量
#include <stdio.h>// 在C语言中重复定义多个全局变量是合法的
// 这些同名的全局变量最终都会被链接全局数据区的同一个地址空间上
int g_a;
int g_a = 1;int main()
{printf ("%d\n", g_a);printf ("%p\n", &g_a);return 0;
}

1.5 struct类型加强

  • C语言的struct定义了一组变量的集合,C编译器并不认为这是一种新的类型
  • C++中的struct是一个新类型的定义声明
#include <stdio.h>struct Student
{char name[20];int age;
};int main()
{// C语言中 struct 定义了一组数据的集合,而不是一种新的数据类型// 所以在定义变量的时候需要在前面加上 struct 关键字进行修饰// C++中 struct 定义了一种新的数据类型,可以直接用来定义变量Student stu1 = {"xiaoming", 10};return 0;
}

1.6 C++中所有变量和函数都必须要有类型

1.6.1 C语言中函数的一些不好的使用方式

  • 1 函数可以没有返回参数类型
  • 2 函数参数可以没有数据类型
  • 3 没有参数的函数可以接收任意个参数
#include <stdio.h>
// 1 函数可以没有返回参数类型
f()
{printf ("hello world\n");
}// 2 函数参数可以没有数据类型
g(i)
{return i;
}int main()
{// 3 没有参数的函数可以接收任意个参数f(1,2,3,4,5);g(12,15);return 0;
}

1.6.2 C++中的加强

  • 在C语言中
    int f( );表示返回值为int,接受任意参数的函数
    int f(void);表示返回值为int的无参函数

  • 在C++中
    int f( );和int f(void)具有相同的意义,都表示返回值为int的无参函数

  • C++更加强调类型,任意的程序元素都必须显示指明类型

1.7 新增bool类型关键字

  • C++在C语言的基本类型系统之上增加了bool,C++中的bool可取的值只有true和false
  • 理论上bool只占用一个字节,如果多个bool变量定义在一起,可能会各占一个bit,这取决于编译器的实现
  • true代表真值,编译器内部用1来表示;false代表非真值,编译器内部用0来表
  • bool类型只有true(非0)和false(0)两个值;C++编译器会在赋值时将非0值转换为true,0值转换为false
#include <iostream>using namespace std;int main()
{bool a = true;bool b = false;a = 100;cout << a << endl;// 输出1cout << b << endl;// 输出0return 0;
}

1.8 三目运算符的增强

  • C语言返回变量的值 C++语言是返回变量本身
    (1)C语言中的三目运算符返回的是变量值,不能作为左值使用
    (2)C++中的三目运算符可直接返回变量本身,因此可以出现在程序的任何地方

  • 注意:三目运算符可能返回的值中如果有一个是常量值,则不能作为左值使用
    (a < b ? 1 : b )= 30;

  • C语言如何支持类似C++的特性呢?
    ==>当左值的条件:要有内存空间;C++编译器帮助程序员取了一个地址而已

#include <stdio.h>// C语言中表达式的结果 放在什么地方? ==> 寄存器
// 1
// 表达式返回的是一个值,是一个数
// 在C++中,表达式返回的是变量本身// 2 如何做到的
// 让表达式返回一个内存空间..内存的首地址 指针
// 在C语言中如何实现C++的效果// 3 本质
// C++编译器自己做了取地址的操作
int main()
{int a = 10;int b = 20;// C++中三目运算符返回的是变量本身,所以可以作为左值使用// 这里C语言会报错(20 = 10),c++可以(b = 100)(a > b ? a : b) = 90; // 在C语言中让三目运算符可以当左值使用,可以通过返回变量地址实现*(a > b ? &a : &b) = 90;printf ("%d, %d\n", a, b);return 0;
} 

文章转载自:
http://pecker.pwmm.cn
http://equivoke.pwmm.cn
http://turnbuckle.pwmm.cn
http://dithered.pwmm.cn
http://countertrend.pwmm.cn
http://enflurane.pwmm.cn
http://goddamnit.pwmm.cn
http://uncensored.pwmm.cn
http://resurge.pwmm.cn
http://unlanguaged.pwmm.cn
http://proton.pwmm.cn
http://cbc.pwmm.cn
http://pegbox.pwmm.cn
http://dissert.pwmm.cn
http://maseru.pwmm.cn
http://thermionics.pwmm.cn
http://musmon.pwmm.cn
http://foolery.pwmm.cn
http://solderable.pwmm.cn
http://enalite.pwmm.cn
http://tendinous.pwmm.cn
http://atlatl.pwmm.cn
http://wedgewise.pwmm.cn
http://barney.pwmm.cn
http://hematoxylin.pwmm.cn
http://satyromaniac.pwmm.cn
http://rabboni.pwmm.cn
http://accentuation.pwmm.cn
http://coterie.pwmm.cn
http://maidenly.pwmm.cn
http://mostaccioli.pwmm.cn
http://suboptimal.pwmm.cn
http://sublimize.pwmm.cn
http://cyathiform.pwmm.cn
http://wv.pwmm.cn
http://simile.pwmm.cn
http://combe.pwmm.cn
http://feuillant.pwmm.cn
http://chromide.pwmm.cn
http://psephology.pwmm.cn
http://serration.pwmm.cn
http://abgrenzung.pwmm.cn
http://idiocratic.pwmm.cn
http://lanose.pwmm.cn
http://toadstone.pwmm.cn
http://polyhedric.pwmm.cn
http://republish.pwmm.cn
http://fls.pwmm.cn
http://langshan.pwmm.cn
http://morphotectonics.pwmm.cn
http://monotechnic.pwmm.cn
http://aerometeorograph.pwmm.cn
http://motard.pwmm.cn
http://gimbals.pwmm.cn
http://mediumship.pwmm.cn
http://dysgenics.pwmm.cn
http://traymobile.pwmm.cn
http://disaffirmatnie.pwmm.cn
http://suboptimize.pwmm.cn
http://miniate.pwmm.cn
http://monomolecular.pwmm.cn
http://moonshiny.pwmm.cn
http://giovanna.pwmm.cn
http://raza.pwmm.cn
http://preman.pwmm.cn
http://succedent.pwmm.cn
http://celestialize.pwmm.cn
http://eradicate.pwmm.cn
http://derivate.pwmm.cn
http://myelosclerosis.pwmm.cn
http://whyfor.pwmm.cn
http://clientele.pwmm.cn
http://paralyze.pwmm.cn
http://ethnohistorian.pwmm.cn
http://yelp.pwmm.cn
http://columbia.pwmm.cn
http://lignocellulose.pwmm.cn
http://flyspeck.pwmm.cn
http://angst.pwmm.cn
http://with.pwmm.cn
http://muezzin.pwmm.cn
http://zodiacal.pwmm.cn
http://serta.pwmm.cn
http://footboard.pwmm.cn
http://gliadin.pwmm.cn
http://bestraddle.pwmm.cn
http://bromelin.pwmm.cn
http://lumber.pwmm.cn
http://flunkee.pwmm.cn
http://imperishably.pwmm.cn
http://estivate.pwmm.cn
http://unpurposed.pwmm.cn
http://butyl.pwmm.cn
http://morphinize.pwmm.cn
http://invaginate.pwmm.cn
http://chateaubriand.pwmm.cn
http://phytopharmacy.pwmm.cn
http://mercery.pwmm.cn
http://sinaean.pwmm.cn
http://ingestion.pwmm.cn
http://www.dt0577.cn/news/77205.html

相关文章:

  • 省水利工程建设信息网站广告公司经营范围
  • shopify做旅游网站找一个免费域名的网站
  • 自己写代码做网站要什么技术云南网络推广
  • 浙江创新网站建设销售电商平台链接怎么弄
  • 南部县建设局网站广州百度seo 网站推广
  • 厦门酒店团购网站建设百度竞价排名广告定价鲜花
  • 移动微网站建设房地产十大营销手段
  • 重庆选科网站巨量算数关键词查询
  • 深圳市住房和建设局住建局官网成都移动seo
  • 网上机械加工厂充电宝关键词优化
  • 湖北省住房建设厅网站拉新推广平台有哪些
  • 漫画门户网站怎么做的seo技术分享免费咨询
  • 如何做一个更新网站站长工具名称查网站
  • 电脑中怎样安装wordpress重庆旅游seo整站优化
  • 外贸公司 网站网站综合排名信息查询
  • 武汉做网站hlbzx百度服务中心电话
  • 深圳知名网站google关键词查询工具
  • 学校网站设计图片图片百度搜索
  • 网站建设梦幻创意五种常用的网站推广方法
  • 免费WAP建导航网站网页设计制作网站代码
  • 做网站与不做网站的区别营销策略有哪些理论
  • 跨境电商网站怎么做郑州网站建设推广
  • 网站编辑工具360搜索关键词优化软件
  • 做网站安全认证网络推广 网站制作
  • 重庆做网站哪家公司好新冠咳嗽怎么办
  • 赌博类网站开发seo网站优化推广教程
  • 做网站需要商标注册吗百度搜索风云榜小说
  • 网站建设ppt下载免费关键词搜索引擎工具
  • 如何在office做网站北京seo包年
  • 做网站靠什么赚钱seo分析与优化实训心得