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

如何用手机做网站吗在线培训管理系统

如何用手机做网站吗,在线培训管理系统,教育行业网站建设,企业网站cms文章目录 前言一、指针1.使用new创建动态结构例子:使用new和delete 2.自动存储、静态存储和动态存储1.自动存储2.静态存储3.动态存储 总结 前言 依旧是指针部分ヾ(◍∇◍)ノ゙ 一、指针 1.使用new创建动态结构 将new用于结构由两步组成:创建…

文章目录

  • 前言
  • 一、指针
    • 1.使用new创建动态结构
      • 例子:使用new和delete
    • 2.自动存储、静态存储和动态存储
      • 1.自动存储
      • 2.静态存储
      • 3.动态存储
  • 总结


前言

依旧是指针部分ヾ(◍°∇°◍)ノ゙


一、指针

1.使用new创建动态结构

将new用于结构由两步组成:创建结构和访问其成员。要创建结构,需要同时使用结构类型和new。例如,要创建一个未命名的inflatable 类型,并将其地址赋给一个指针,可以这样做:

inflatable *ps =new inflatable;

这将把足以存储 infatable 结构的一块可用内存的地址赋给 ps。这种句法和 C++的内置类型完全相同。比较棘手的一步是访问成员。创建动态结构时,不能将成员运算符句点用于结构名,因为这种结构没有名称,只是知道它的地址。 C++专门为这种情况提供了一个运算符:箭头成员运算符(->)。该运算符由连字符和大于号组成,可用于指向结构的指针,就像点运算符可用于结构名一样。例如,如果ps指向一个inflatable 结构,则ps->price 是被指向的结构的 price 成员。
在这里插入图片描述
另一种访问结构成员的方法是,如果ps是指向结构的指针,则 * ps就是被指向的值。由于*ps是一个结构,因此(*ps).price是该结构的 price成员。C++的运算符优先规则要求使用括号。

例子:使用new和delete

#include <iostream>
#include <cstring>
using namespace std;
char *getname(void);
int main()
{char *name;name = getname();//assign address of string to namecout<<name<<"at"<<(int *)name << "\n";delete []name ;//memory freedname = getname();cout<<name<<" at "<<(int *)name <<"\n";delete []name;return 0;
}
char *getname()
{char temp[80];//temporary storagechar temp[80];cout <<"Enter last name:";cin >>temp;char *pn=new char[strlen(temp)+1];strcpy(pn,temp);//copy string into smaller spacereturn pn;//temp lost when function ends
}

在这里插入图片描述
getname()使用 cin 将输入的单词放到temp数组中, 然后使用 new分配新内存,以存储该单词。
程序需要strlen(temp)+1个字符(包括空字符)来存储该字符串,因此将这个值提供给 new。获得空间后,getname()使用标准库函数strcpy()将temp中的字符串复制到新的内存块中。该函数并不检查内存块是否能够容纳字符串,但getname()通过使用new 请求合适的字节数来完成了这样的工作。最后,函数返回pn,这是字符串副本的地址。在 main()中,返回值(地址)被赋给指针 name。该指针是在 main()中定义的,但它指向 getname()函数中分配的内存块。然后,程序打印该字符串及其地址。接下来,在释放 name指向的内存块后,main()再次调用 getname()。
C++不保证新释放的内存就是下一次使用 new 时选择的内存.

2.自动存储、静态存储和动态存储

1.自动存储

在函数内部定义的常规变量使用自动存储空间,被称为自动变量,这意味着它们在所属的函数被调用时自动产生,在该函数结束时消亡。例如,上述例子的temp数组仅当 getname()函数活动时存在。当程序控制权回到 main()时,temp使用的内存将自动被释放。
自动变量是一个局部变量,其作用域为包含它的代码块。代码块是被包含在花括号中的一段代码。到目前为止,我们使用的所有代码块都是整个函数。然而,在下一章将会看到,函数内也可以有代码块。如果在其中的某个代码块定义了一个变量,则该变量仅在程序执行该代码块中的代码时存在。自动变量通常存储在栈中。这意味着执行代码块时,其中的变量将依次加入到栈中,而在离开代码块时,将按相反的顺序释放这些变量,这被称为后进先出(LIFO)。因此,在程序执行过程中,栈将不断地增大和缩小。

2.静态存储

静态存储是整个程序执行期间都存在的存储方式。使变量成为静态的方式有两种:一种是在函数外面定义它;另一种是在声明变量时使用关键字static:

static double fee =56.50;

能初始化静态数组和静态结构,也可以初始化自动数组和自动结构。不过有些C++实现还不支持对自动数组和自动结构的初始化。
第9章将详细介绍静态存储。自动存储和静态存储的关键在于: 这些方法严格地限制了变量的寿命。
变量可能存在于程序的整个生命周期(静态变量),也可能只是在特定函数被执行时存在(自动变量)

3.动态存储

new 和 delete 运算符提供了一种比自动变量和静态变量更灵活的方法。它们管理了一个内存池,这在 C++中被称为自由存储空间(free store)或堆(heap)。该内存池同用于静态变量和自动变量的内存是分开的。
new 和 delete 能够在一个函数中分配内存,而在另一个函数中释放它。因此,数据的生命周期不完全受程序或函数的生存时间控制。与使用常规变量相比,使用new和delete 让程序员对程序如何使用内存有更大的控制权。然而,内存管理也更复杂了。在栈中,自动添加和删除机制使得占用的内存总是连续的,但 new 和 delete 的相互影响可能导致占用的自由存储区不连续,这使得跟踪新分配内存的位置更困难。


总结

指针是功能最强大的 C++工具之一,但也最危险,因为它们允许执行对计算机不友好的操作,如使用未经初始化的指针来访问内存或者试图释放同一个内存块两次。另外,在通过实践习惯指针表示法和指针概念之前,指针是容易引起迷惑的。由于指针是 C++编程的重要组成部分,后面将更详细地讨论它。

http://www.ds6.com.cn/news/14170.html

相关文章:

  • 网站目录权限设置百度搜索风云榜电脑版
  • 做文案图片上什么网站网络推广的优势
  • 齐齐哈尔哪里做网站免费b站在线观看人数在哪
  • 有服务器可以做网站吗病毒什么时候才能消失
  • WordPress網站放ICP一周热点新闻
  • 网站广告投放价格表优化排名工具
  • 在线网站做成app高级搜索引擎
  • 海淀周边网站建设百度广告费
  • 佛山专业做企业网站网络营销有哪些功能
  • 网站代备案长春网站建设公司哪家好
  • 怎样下载网站模板网络推广哪家做得比较好
  • 消防做设计有什么网站长沙百度网站推广优化
  • 如何搭建php网站企业网络推广方法
  • 企业在线设计网站百度ocpc如何优化
  • 国外域名注册哪个便宜seo的作用主要有
  • 中国建设银行浙江分行网站seo推广教程视频
  • 百度站内搜索提升关键词排名小程序设计
  • 网上商城互联网网站开发网站链接交易
  • 网络策划案seo站长工具下载
  • 做博客网站汽车网站建设
  • 能免费做网站宁波网站制作优化服务
  • 境外网站icp备案申请表web网址
  • 腾讯云服务器网站域名备案怎么做百度推广平台
  • 怎么做不花钱的网站seo软件哪个好
  • 融资网站建设重点网络营销方式方法
  • java实现大型门户网站开发经验搜狗推广效果好吗
  • 有教做路桥质检资料的网站吗点金推广优化公司
  • 网站后台登陆显示验证码错误上海疫情最新数据
  • 网站建设的一般流程排序为长沙百度网站排名优化
  • 乐清高端网站建设免费seo优化工具