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

鸡西市法院的网站建设公司优化网站性能

鸡西市法院的网站建设公司,优化网站性能,在线设计平台leopoly,怎么在网站做系统目录 前言 C 堆指针 栈指针 常量指针 指针常量 引用 常量引用 总结 前言 目前做了很多项目,接触到各种语言,基本上用什么学什么,语言的边际就会很模糊,实际上语言的设计大同小异,只是语言具备各自的特性区别。…

目录

前言

C++

堆指针

栈指针

常量指针

指针常量

引用 

 常量引用

总结


前言

目前做了很多项目,接触到各种语言,基本上用什么学什么,语言的边际就会很模糊,实际上语言的设计大同小异,只是语言具备各自的特性区别。其中一个重要的概念是指针,这个在C语言就风靡的技术,实际上在各个语言或显示或隐世的体现出来,而且在函数或者方法栈的调用展现本质相同的现象。相对而言Golang和Java在设计的时候差不多,C++概念真多。

C++

C++的指针,指针拓展至C,实际上默认情况下C++的指针类似go或者Java的引用,但是有特殊的定义,比如常量指针,指针常量,还有引用,demo如下。

堆指针

C++有栈对象和堆对象内存分配的说法,堆对象的指针需要手动回收。


#include <iostream>using namespace std;class Person{int age;string name;public:Person(){}Person(string name, int age){this->name = name;this->age = age;}string sayHello(){return name + " : " + to_string(age);};
};void setPerson(Person* person){delete person;new Person("tom", 35);//省略写法,默认就会对person赋值
//    Person p;
//    person = &p;
};int main(){Person* person = new Person("JIM", 33);setPerson(person);string result = person->sayHello();cout << result << endl;delete person;return 0;
}

随意写了一个类,使用指针访问,当然也可以创建栈对象,取地址,结果如下

TOM : 35

在指针的时候,即使在方法栈中赋值也会影响数据的改变,这个在Golang和Java中是不存在的,当然Golang类似C语言,可以使用指针的指针模拟这种情况,这就是为什么说Golang是最接近C语言的,C语言也是这么做的。 笔者也写了其他文章:go 函数或者方法参数调用的过程_fenglllle的博客-CSDN博客

栈指针

如果使用栈对象,不需要手动回收内存,引用计数法自动回收


#include <iostream>using namespace std;class Person{int age;string name;public:Person(){}Person(string name, int age){this->name = name;this->age = age;}string sayHello(){return name + " : " + to_string(age);};
};void setPerson(Person* person){//delete person;
//    new Person("tom", 35);Person p("TOM", 35);person = &p;
};int main(){Person person = Person("JIM", 33);setPerson(&person);string result = person.sayHello();cout << result << endl;//delete person;return 0;
}

结果就跟Java的模式一样

JIM : 33

如果直接修改地址的值,那么是可以修改的

#include <iostream>using namespace std;class Person{int age;string name;public:Person(){}Person(string name, int age){this->name = name;this->age = age;}void setPerson(string name, int age){this->name = name;this->age = age;}string sayHello(){return name + " : " + to_string(age);};
};void setPerson(Person* person){//delete person;
//    new Person("tom", 35);
//    Person p("TOM", 35);
//    person = &p;person->setPerson("TOM", 35);
};int main(){Person person = Person("JIM", 33);setPerson(&person);string result = person.sayHello();cout << result << endl;//delete person;return 0;
}

结果如下,这个经常在Java的八股文中提到,实际上就是对指针的使用,只不过Java的对象都分配至堆中(因为GC,发展了很多代)

TOM : 35

常量指针

实际上就是指针,指向常量的指针,就跟函数指针和指针函数的区别类似,是指针,意味着内存地址是可以修改的,指向的常量,意味着内存地址的值是不可修改的

const int*按照从先到后解析,表示是一个指针,使用常量修饰符的指针(跟Golang相反)

这个与Java和Golang不一样,在Java和Golang没有常量指针的设计,或者说没有限制指针只能指向常量。

指针常量

顾名思义:int* const 表示指针修饰常量,指针是常量,表示指针指向的内存地址不能修改,但是指针指向内存地址的值可以修改。在Java里面比如final List<String> list,在Golang限制使用指针类型为常量修饰。

报错与上面刚刚相反,可以修改值,但是不能修改地址 。

引用 

引用的本质就是指针常量,就是上面的简化写法。

 常量引用

 这个就类似Golang了,常量不允许修改值。

总结

实际上语言学多了,设计都差不多,只不过出于不同的能力考虑,功能就有额外的区别,所以就会有xx语言适合xx开发的说法,在实际运用中,可以一边做项目一边学习。比如笔者最近想看明白JDK的底层实现和K8S的一些ebpf的内容,就需要学习C++,不过C++的关键字是真多,而且语法很细,远超其他语言。比如指针,可能就是因为C语言没有细化指针,而C++具体化了。

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

相关文章:

  • 关于网站建设的文章百度域名收录提交入口
  • 国人在线做网站推广图片大全
  • 郑州网站建设七彩科技四年级说新闻2023
  • 在什么网站上做自媒体seo整站怎么优化
  • 网站开发要注意安全性公司优化是什么意思
  • 河北邢台做移动网站开通网站需要多少钱
  • 天河网站建设多少钱淘宝关键词优化
  • 中型网站 收益关键词排名查询官网
  • 网站的弹窗是怎么做的谈谈对seo的理解
  • 广州网站制作费用宁波seo外包哪个品牌好
  • 河南高端网站建设广州网站优化页面
  • 企业可以备案几个网站南昌seo实用技巧
  • 网站用什么布局专业网站建设公司
  • 公司网站怎么做分录it培训机构学费一般多少
  • 如何将自己做的网页做成网站绍兴seo
  • 河南省住房与城乡建设厅网站首页怎么做属于自己的网站
  • 移动端网站开发推广效果最好的平台
  • 用二级页面做网站的源代码自助建站系统破解版
  • 网站上怎么做动画广告推广策略包括哪些内容
  • 广州网站优化公司大亚湾发布
  • 广州网站开发招聘百度经验悬赏令
  • 吴江建设局网站郑州粒米seo外包
  • 建设工程合同纠纷与劳务合同纠纷seo培训教程视频
  • 找网站建设公司哪家最好沈阳市网站
  • sh域名做的好的网站什么是营销
  • 网站平台怎么做推广一站式网络推广服务
  • 百度对新网站排名问题兰州seo快速优化报价
  • 网站建设常用代码湘潭网络推广
  • 做网站上传图片一直错误好用搜索引擎排名
  • 钟祥网站建设网络推广的含义