8、C++指针和自由存储空间
  
计算机程序在存储数据时必须跟踪3中基本属性。

    • 信息存储在何处
    • 存储的值为多少
    • 存储信息是什么类型。  

指针是 一个变量,其存储的是值得内存地址

  对于常规变量的地址,只需要对变量应用地址运算符(&),就可以获得它的位置;例如,如果home是一个变量,那么&home就是他的地址。

#include "stdafx.h"
#include <iostream> //引用库函数
using namespace std; //使用命名空间 struct inflatable
{
char name[20];
float volume;
double price;
}; int main() //主函数,程序执行的入口
{ int donuts = 6;
double cups = 4.5;
cout << "donuts value = " << donuts;
cout << "and donuts address = " << &donuts << endl;
cout << "cups value = " << cups;
cout << "and cups address = " << &cups << endl;
cin.get();
return 0; //函数返回值
}

  结果:

 

因此,指针名表示的是地址。* 运算符被称为间接值(indirect velue)或解除引用(dereferencing)运算符,将其应用于指针,可以得到该地址存储的值(这和乘法使用的符号相同,C++根据上下文来确定所指的是乘法还是解除引用)

1、指针申明与初始化:

  指针声明必须制定指针的数据的类型

int * p_updata

这表明,p_updata的类型为int,由于*运算符被用于指针,因此p_updata变量本身必须是指针。可以这样说,p_updata是指针(地址),而*p_updata是int,而不是指针。

#include "stdafx.h"
#include <iostream> //引用库函数
using namespace std; //使用命名空间 struct inflatable
{
char name[20];
float volume;
double price;
}; int main() //主函数,程序执行的入口
{ int hig = 5;
int * pt = &hig;
cout << "Value of hig =" << hig
<< ";Address of hig =" << &hig << endl;
cout << "Value of *pt =" << *pt
<< ";value of pt =" << pt << endl;
cin.get();
return 0; //函数返回值
}

  结果:

2、指针的危险:

  C++在创建指针时,计算机将分配用来存储地址的内存,但不会分配用来存储指针所指向的数据的内存。为数据提供空间是一个独立的步骤。

long *fellow;           //创建一个指针
*fellow = 223323; //为指针赋值,但是fellow,没有被赋值,所以不知道fellow代表的地址是多少,所以不知道223323将会存储在内存中的哪里。

   警告:一定要在对指针应用解除引用运算符(*)之前,将指针初始化为一个人确定的、适当的地址。

3、指针和数字

  

4、使用new来分配内存

  在C语言中可以使用malloc()函数来分配内存,在C++中仍然可以,但C++还有更好的方法——new运算符    

5、使用delete释放内存

6、使用new创建动态数组

  

8、C++指针和自由存储空间的更多相关文章

  1. c语言程序设计案例教程(第2版)笔记(四)—指针、分配存储空间、文件

    零散知识点: 指针类型:每个变量占用的首单元地址称为这个变量的存储地址. “&”为“取地址运算符”.格式:&  变量名.功能:返回指定变量的存储地址. “*”为“取内容运算”.格式:* ...

  2. (4)C++ 复合类型-指针

    篇幅长从 https://www.cnblogs.com/buchizaodian/p/11511256.html 提取出来 七.指针和自由存储空间  1.寻址运算符 * #include<io ...

  3. C++—复合类型

    内容概要: -创建和使用数组 -创建和使用C-风格字符串 -创建和使用string类字符串 -使用方法getline()和get()读取字符串 -混合输入字符串和数字 -创建和使用结构 -创建和使用共 ...

  4. C++ Primer Plus (Stephen Prata 著)

    第1章 预备知识 (已看) 第2章 开始学习C++ (已看) 第3章 处理数据 (已看) 第4章 复合类型 (已看) 第5章 循环和关系表达式 (已看) 第6章 分支语句和逻辑运算符 (已看) 第7章 ...

  5. C++ Primer Plus学习:第四章

    C++入门第四章:复合类型 1 数组 数组(array)是一种数据格式,能够存储多个同类型的值. 使用数组前,首先要声明.声明包括三个方面: 存储每个元素中值的类型 数组名 数组中的元素个数 声明的通 ...

  6. C++_基础2-复合数据类型

    C语言使用术语“派生类型”,C++对类关系使用术语“派生”.所以就改用“复合类型”. 数组 数组是一种数据格式,能够存储多个同类型的值. 数组声明应指出以下三点: 存储在每个元素中的值的类型: 数组名 ...

  7. c++ primer plus 第6版 部分一 1-4章

    c++ primer plus 第6版 源代码 ---编译器---目标代码---连接程序(启动代码--库代码)---可执行代码 源代码扩展名:c   cc   cxx     C    cpp     ...

  8. c++学习书籍推荐《C++ Primer Plus中文版(第6版)》下载

    百度云及其他网盘下载地址:点我 编辑推荐 一本经久不衰的C++畅销经典教程:一本支持C++11新标准的程序设计图书.  它被誉为“开发人员学习C++的教程,没有之一”! Amazon网站“Langua ...

  9. (3)C++复合类型

    存储数据时必须跟踪的三个属性:信息储存在何处,存储的值,存储的类型 一.数组 #include <iostream> using namespace std; int main() { / ...

随机推荐

  1. 用Golang为Python编写模块

    Go里面需要显示的引入C模块, 让编译器支持生成动态链接库, 并且在代码中可以使用C语言的数据类型,这个至关重要. Calling Go code from Python code 摘取一个最简单例子 ...

  2. Python将两个数组合并成一个数组,多维数组变成一维数组

    1.extend方法 c1 = ["Red","Green","Blue"] c2 = ["Orange"," ...

  3. SpringMVC总结三:请求Controller返回视图类型以及请求方式、参数介绍

    视图解析,请求Controller返回的视图类型: @Controller @RequestMapping("/test") public class TestController ...

  4. 关于CountDownLatch控制线程的执行顺序

    在上一篇文章中说过使用thread.join()方法.newSingleThreadExecutor单线程池来控制线程执行顺序.在文章的末尾我提出了一种构想,可否使用经典的生产者和消费者模型来控制执行 ...

  5. Ant之build.xml详解---可用

    Ant的概念 :在Eclipse中使用Ant Ant是Java平台下非常棒的批处理命令执行程序,能非常方便地自动完成编译,测试,打包,部署等等一系列任务,大大提高开发效率. Ant和make命令很像. ...

  6. 模仿慕课网一步步发布一个开源库到 JCenter

    H:\common\-common-25.2.2\upload.gradle // Bintray /* Properties properties = new Properties() proper ...

  7. ObjectMapper对象的使用 Object2JSON

    // // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler ...

  8. 1-element.src.match("bulbon")

    element.src.match("bulbon")这里的math里面”bulbon“是什么意思? 原代码中 if (element.src.match("bulbon ...

  9. .html与.text的异同

    .html与.text的方法操作是一样,只是在具体针对处理对象不同 .html处理的是元素内容,.text处理的是文本内容 .html只能使用在HTML文档中,.text 在XML 和 HTML 文档 ...

  10. redis系列:基于redis的分布式锁

    一.介绍 这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁.会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁. 本篇文章会将分布式锁的实现分为两部分,一个是单机环境, ...