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

党支部网站建设问题网上营销推广

党支部网站建设问题,网上营销推广,无锡市网站建设,wordpress主题汉化软件C 1、堆和栈2、指针2.1、指针的本质2.2、指针的意义2.3、清空指针2.4、C类中的this 3、malloc and new4、命名空间4.1、创建命名空间4.2、使用命名空间 5、编译程序的四个步骤5.1、预处理5.2、编译5.3、汇编5.4、链接 1、堆和栈 堆(heap)和栈&#xff0…

C++

  • 1、堆和栈
  • 2、指针
    • 2.1、指针的本质
    • 2.2、指针的意义
    • 2.3、清空指针
    • 2.4、C++类中的this
  • 3、malloc and new
  • 4、命名空间
    • 4.1、创建命名空间
    • 4.2、使用命名空间
  • 5、编译程序的四个步骤
    • 5.1、预处理
    • 5.2、编译
    • 5.3、汇编
    • 5.4、链接

1、堆和栈

堆(heap)和栈(stack)都是一种内存空间。
空间的分配是由系统自动完成的,用来存放各种变量和寄存器,无论是全局变量还是局部变量,都存储在其中。同时每个程序线程都有属于自己的栈空间,用以保证之间互不干扰。
而在一个线程当中的每一个函数在被调用的时候,也会被分配一些属于自己的栈空间,用以存放该函数所用到的局部变量和一些必要的寄存器信息。当函数被调用结束,其对应的栈的空间也会被释放。因此,局部变量的生存周期终止于栈空间被释放。
空间的分配则需要人为干涉了,它可以用来存放一些临时变量,其空间相来说也大一些。更加不同于栈的一点是,堆是任何函数都可以访问的,不存在局限性。
在这里插入图片描述

2、指针

指针是C语言学习的时候用到,但这里再次记录一下,以便理解后面的内容。

2.1、指针的本质

指针是一种存放地址的特殊变量,它也有属于自己的地址。因此,指针并不等于地址!!!
我们可以通过以下代码查看指针存放的地址,以及指针本身的地址。

void main()
{int *point;printf("point's value is %p\n",point);printf("point's address is %p\n",&point);
}

再通过以下几个例子可以进一步了解指针本质。

错误示例:int *p;  *p = 9;

错误原因:这里p指针存放的是NULL的地址,所以这句代码相当于让NULL地址对应的变量(NULL)去存放9这个数。而NULL即是空,让空去存放东西,显然是错误的。

正确示例1:int *p;int a;p = &a;a = 9;
正确示例2:int *p;int a;p = &a;*p = 9;

正确原因:通过p=&a;这句代码让p指针存放a变量的地址,那么无论是直接修改a,还是通过地址索引a再修改之,结果都是一样的。
此外,由于在32为计算机,地址则占4个字节,在64位计算机中,地址占6个字节或8个字节的缘故,指针的大小也是其对应地址所占的空间。

2.2、指针的意义

指针可以说是C语言的灵魂,即便在C++当中也发挥着巨大的作用。以下对于指针的意义仅是我个人学习过程中的所感所获。
意义一:在大部分程序语言中,函数的返回值一般分为两种情况,一种是返回一个值,另一种则是返回一个地址。我们称之为传值传址。而传址的目的,还是为了获得目标值,所以此时用到的就是指针的解引用功能。
当然,一般不再用return,也是在函数内直接调用另外一个目标函数,然后把地址作为参数传进去。如下例子。这样做的原因是为了避免在return之后,局部变量的生命中止,原地址被释放。
意义二:指针的存在,相当于提供了一个访问变量的新通道,通过指针,我们可以跨栈区去范围变量,当然也可以访问堆。下面讲malloc和new的时候会用到。

#include<stdio.h>void function_1(void);
void function_2(int *);void function_1()
{int i,temp[10];for(i=0;i<10;i++){temp[i] = i;}function_2(temp);}void function_2(int *temp)
{printf("the value is %d \n",temp[5]);
}int main()
{function_1();return 0;
}

2.3、清空指针

再次强调,指针其实一种存放地址的特殊变量,所以清空指针,是让地址不指向任何值的意思。那么让其指向NULL即可。

*point = NULL;

2.4、C++类中的this

this是每一个对象(类的实例化)都有的一个隐含参数,它是对象本身的地址,作用域也在仅限于对象自身。
注:声明一个东西,无论是类还是其他变量,它本身的变量不占空间的,只有实例化之后才开始占据内存,才有所谓的地址。
举个例子:

class Car
{
public:int temp1;Car(int num){cout<<"the license plate of this car is:"<<num<<endl; } void run(){int num = this->temp1;    //访问对象的temp1属性,当然在这里不加这个this也是可以的。用->是因为this是指针。}
private:int temp2;
};

3、malloc and new

malloc和new都是用来分配堆空间的函数指令,其返回值都是一个地址。
其中malloc的函数定义是:void * malloc(unsigned int size); 可以看出,malloc为程序申请了一个size字节大小的控制,并返回一个这个空间的首地址。

使用方法:
int *p = malloc(4);
float *p = malloc(4);
...
free(p); //malloc和free是成对出现的,使用完内存,要用free把内存还回去。

new则常用于C++为类分配内存空间,可以理解为malloc的进化版。new的实现过程可以分为两步,第一步和malloc一样,向堆申请空间。第二步则是执行构造器,对类进行初始化。

#include <iostream>using namespace std;class Car
{
public:Car(int num){cout<<"the license plate of this car is:"<<num<<endl; } int temp1;
private:int temp2;         
};int main()
{Car *mycar = new Car(888);mycar->temp1 = 5;	//mycar->temp2 = 5;  ×,即便指针,也不能访问私有变量  delete(mycar);     //delate和new成对出现,也是为了释放已经使用完毕的堆空间,反正内存泄漏。mycar = NULL; //最好还是清空一下指针return 0;
}

其中,Car *mycar = new Car(888)意思是向堆申请一块可以存放这个类所有成员函数和变量的空间,返回这个空间的首地址。那么当然得用指向这个类的指针去接收这个地址了。而由于mycar此时已经是一个指针,那么要去访问类里面的成员变量就要用到’->‘而不是’.'了。

mycar->temp1 等于 (*mycar).temp1

4、命名空间

4.1、创建命名空间

一般把命名空间放在头文件里,不同的命名空间也是使用不同的栈区,这使得它们即使有相同名字的变量也毫不冲突。
在以下的这个例子里,假设我们创建了一个myspace.h文件,然把命名空间到定义放在.h文件中。

#ifndef MY_SPACE     // ifndef == if no define。防止多次引用头文件的时候,重复执行以下代码
#define MY_SPACE   namespace  myspace
{....
}#endif

4.2、使用命名空间

#include "myspace.h"  //引用自己创建的头文件用“”号,引用系统的文件的时候用<>号。
using namespace myspace;

用了以上这句代码,就可以在该源文件中使用myspace里的所有函数和类。这其实和之前用到的using namespace std是一样的原理。但如果怕不同命名空间在这个文件中出现同名函数或同名变量冲突,可以不使用using namespace …,在需要用到该空间函数或变量的时候再使用以下语句。

myspace::函数or变量

5、编译程序的四个步骤

5.1、预处理

将所有头文件拉取进来,并读取程序所有宏定义,将#if、#ifndef等指令执行完,留下需要用到的代码块。

5.2、编译

检查程序是否有错误。

5.3、汇编

将程序转化为机器能读懂的汇编指令。

5.4、链接

将多个源文件链接起来。

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

相关文章:

  • 一_建设网站前的市场分析奶茶软文案例300字
  • 做网站智能工具江阴企业网站制作
  • 怎么看网站有没有做推广大数据营销系统多少钱
  • 广东工厂搜索seoseo平台优化服务
  • 网站开发平台 eclipseseo网站推广案例
  • 什么网站做调查能赚钱关键词优化报价推荐
  • 网站开发职业认知小结开发一个app平台大概需要多少钱?
  • 装修公司全包项目seo搜索引擎实训心得体会
  • 爱站网是干什么的长沙关键词排名首页
  • wordpress 教垜四川seo推广公司
  • 东莞市阳光网青岛seo服务
  • 网站弹窗在中间位置企业培训师
  • 整站下载器 安卓版域名解析查询站长工具
  • 跨境自建站模板seo推广是做什么
  • 网站建设与网页设计报告网络营销师报名入口
  • 生成前端页面的网站东莞网络营销全网推广
  • 网站及单位网站建设情况免费男女打扑克的软件
  • 公司有网站有什么好处网上开店如何推广自己的网店
  • 海口网站建设策划关键词排名优化工具有用吗
  • 请问哪里可以做网站汕头seo
  • 访问国外网站速度慢苏州关键词seo排名
  • 做网站备案照片的要求谷歌seo教程
  • wordpress站点全屏新站如何让百度快速收录
  • wordpress 会议 主题推广排名seo
  • 源码开发网站建设sem与seo的区别
  • 如何查网站的空间防恶意点击软件
  • 单位网站建设收费标准互联网推广引流
  • 网站有中文源码加英文怎么做关键词歌词完整版
  • 建设网站企业银行做网站的平台
  • 如何进行网站建设分析网站推广app软件