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

奉贤做网站平台做推广的技巧

奉贤做网站,平台做推广的技巧,网站开发费用如何记账,购买域名和服务器多少钱在C中,const修饰符用于声明常量,有两种常见的形式:顶层const和底层const,它们之间的区别在于它们修饰的对象及其在不同场景中的作用。 1. 顶层const (Top-level const) 顶层const用于修饰变量本身,使其成为常量。这意…

在C++中,const修饰符用于声明常量,有两种常见的形式:顶层const底层const,它们之间的区别在于它们修饰的对象及其在不同场景中的作用。

1. 顶层const (Top-level const)

顶层const用于修饰变量本身,使其成为常量。这意味着变量的值不能被修改。例如:

const int a = 10;

在这段代码中,a是顶层const,表示a的值不能被改变。

  • 作用:限制变量本身,使其不能被修改。
  • 应用场景:通常用于声明某个变量的值不可改变。

2. 底层const (Low-level const)

底层const则用于修饰指针或引用所指向的对象,使得通过指针或引用不能修改该对象的值。例如:

const int* ptr;

这里,ptr是一个指向int常量的指针,ptr本身可以指向不同的地址,但不能通过ptr修改所指向对象的值。

  • 作用:限制指针或引用指向的对象的可修改性。
  • 应用场景:用于指针或引用,使其无法修改所指向的对象的值。

例子区分顶层const和底层const:

int x = 5;
const int* p1 = &x;    // p1是底层const,不能通过p1修改x的值
int* const p2 = &x;    // p2是顶层const,不能改变p2指向的地址
const int* const p3 = &x; // p3既是顶层const又是底层const,既不能修改p3指向的地址,也不能修改x的值
  • p1是一个指向int常量的指针(底层const),可以改变指针的指向,但不能通过p1修改所指向对象的值。
  • p2是一个常量指针(顶层const),即指针本身是常量,不能改变其指向的地址,但可以通过p2修改指向对象的值。
  • p3同时是顶层和底层const,既不能修改指针的指向,也不能修改指针指向对象的值。

总结:顶层const用于限制变量本身的修改,底层const用于限制通过指针或引用修改所指向的对象。

在这里插入图片描述
我将逐行分析这些代码并解释其中的关键点,帮助你理解顶层const和底层const的作用。

const int a = 10;
int b = a;
  • a是顶层const,表示它是一个常量,值为10,不能被修改。
  • b是一个普通的整数,它的值被初始化为a的值(即10),这在C++中是合法的,因为b不是const类型。
const int *const p = new int(10);
int *p1 = p;  // 错误
int *const p2 = p;  // 错误
const int *p3 = p;
  • p是一个顶层和底层const指针:const int*表示p指向一个const int(底层const),即通过p不能修改其所指向的值;const p(顶层const)表示p本身是一个常量指针,不能修改它指向的地址。
  • p1的类型是int*,试图将const int*类型的p赋值给非const的p1,这是非法的,编译器会报错。因为p1可以修改所指向对象的值,但p不能。
  • p2的类型是int *const,表示p2是一个常量指针,不能改变指向的地址,但可以通过p2修改指向对象的值。由于pconst int*,不能通过p2修改对象的值,因此也是非法的。
  • p3的类型是const int*,与p兼容,因此可以赋值。
int *p4 = &a;  // 错误
  • aconst int,但是p4是一个普通的int*,这意味着通过p4可以修改a的值。这是非法的,因为a是一个常量,不能通过普通指针来修改。
const int &r1 = 20;
int &r2 = a;  // 错误
int &r3 = r1;  // 错误
  • r1是一个对const int的引用,绑定到字面值20上,这是合法的,因为C++允许const引用绑定到字面值或常量表达式。
  • r2是一个普通的引用,试图引用a,但aconst,不能通过非const引用绑定到常量。
  • r3也是一个普通的引用,试图引用r1,但由于r1是const,r3不能通过非const引用绑定到一个const引用上。

结论:

  • 顶层const限制变量本身的修改,如p指向的地址不能被修改。
  • 底层const限制通过指针或引用对对象值的修改,如p指向的值不能被修改。
  • 非const指针或引用不能指向const对象或通过非const引用绑定const对象。

p3的类型是const int*,与p兼容,因此可以赋值。这个如何理解

这句话的意思是:p3的类型是const int*,而p的类型是const int *const。虽然p是一个常量指针(顶层const),但它指向的是一个const int类型的值(底层const),因此p的底层类型与p3相同,都是指向const int的指针。

详细解释:

const int *const p = new int(10);  // p 是 const 指针,指向 const int
const int *p3 = p;                 // p3 是指向 const int 的普通指针
  • p的类型const int *const p

    • const int *:表示指针指向一个const int类型的对象(底层const),即不能通过该指针修改所指向的整数值。
    • const p:表示p本身是一个常量指针(顶层const),也就是说指针的地址不能改变。
  • p3的类型const int *p3

    • const int *:表示指针p3指向一个const int类型的对象(底层const),即不能通过该指针修改所指向的整数值。

为什么p3可以赋值为p

尽管p是一个常量指针(顶层const),但p3不需要关心p本身是否是常量指针,p3只关心p指向的对象类型(底层const)。由于p指向的是一个const int,这与p3的类型兼容,因此可以赋值。

具体来说:

  • p指向的是const int,这与p3的底层const要求兼容。
  • 赋值时,p的顶层const(即指针本身不可修改)并不影响赋值给p3,因为p3本身不是常量指针,允许指针指向其他地址。

因此,p3可以指向与p相同的地址,但不能通过p3修改指向的值(因为是const int*)。

http://www.hkea.cn/news/783122/

相关文章:

  • 赤峰市做网站公司今日的最新消息
  • 上海最大的贸易公司seo网络推广机构
  • jsp 网站开发广告发布平台
  • b2c网站综合对比评价站长统计幸福宝
  • 网站建设意见做推广app赚钱的项目
  • 哈尔滨营销网站制作做外贸推广
  • 深圳网站建设外贸公司排名搜索热词排名
  • 网络科技公司招聘可靠吗seo多久可以学会
  • 企业网站建设的方案ppt网络营销的特点主要包括什么
  • 如何自行建设网站推广关键词优化
  • 建设学院网站百度收录关键词查询
  • 有关外贸的网站有哪些内容武汉抖音seo搜索
  • 娄底网站建设的话术深圳网站关键词排名优化
  • 福田大型商城网站建设seo营销方法
  • 网站开发专业就业指导企业网站设计与实现论文
  • 网络营销方式的思维导图seo关键词优化系统
  • wordpress访客ip记录福清市百度seo
  • 网站下载速度慢互联网广告推广公司
  • 电影网站空间配置网络营销的工具和方法有哪些
  • 包装设计网站免费百度seo搜索引擎优化厂家
  • 免费做公司网站sem对seo的影响有哪些
  • 网站空间购买费用关键词优化计划
  • 网站制作可以卖多少钱陕西网站建设制作
  • 深圳中小企业网站制作谷歌海外广告投放
  • 做游戏网站的需求分析创建app平台
  • 青岛胶南做网站的有多少seo商学院
  • 二月网站建设南宁百度个人中心登录
  • 如何在相关网站免费做宣传广告免费建立个人网站官网
  • 做搜狗网站优化首自己建立网站步骤
  • 企业资质查询官方网站最好的小说网站排名