从b站上黑马程序员的c++课里学到的C++之指针变量的定义和使用

指针变量的定义和使用

简单理解指针就是地址。

内存编号是从0开始记录的,一般用16进制数字表示

  1. 1 #include <iostream>
  2. 2 using namespace std;
  3. 3
  4. 4 int main()
  5. 5 {
  6. 6 int a = 10; //定义整型变量a
  7. 7
  8. 8 //1,指针的定义语法:数据类型 * 变量名;
  9. 9 int* p;
  10. 10
  11. 11 p = &a; //建立指针和变量的关系,让指针记录变量a的地址
  12. 12 cout << "a的地址为:" << &a << endl;
  13. 13 cout << "指针p为:" << p << endl;
  14. 14
  15. 15 //2,指针的使用
  16. 16 //可以通过解引用的方式来找到指针指向的内存
  17. 17 //指针前加 * 代表解引用,找到指针指向的内存中的数据
  18. 18 *p = 1000;
  19. 19 cout << "a = " << a << endl;
  20. 20 cout << "*p = " << *p << endl;
  21. 21
  22. 22 return 0;
  23. 23 }

运行结果显示:

指针所占的内存空间

在32位操作系统下:占用4个字节空间,64位下占用8个字节。

生成----配置管理器----平台,可以更改编译器的环境

  1. 1 #include <iostream>
  2. 2 using namespace std;
  3. 3
  4. 4 int main()
  5. 5 {
  6. 6 int a = 10;
  7. 7 int* p = &a;
  8. 8 cout << "sizeof (int *) = " << sizeof(p) << endl;
  9. 9 cout << "sizeof (int *) = " << sizeof(int *) << endl;
  10. 10 cout << "sizeof (float *) = " << sizeof(float *) << endl;
  11. 11 cout << "sizeof (double *) = " << sizeof(double *) << endl;
  12. 12 cout << "sizeof (char *) = " << sizeof(char *) << endl;
  13. 13
  14. 14 return 0;
  15. 15 }

 运行结果显示:

熟记:在32位操作系统下,指针是占4个字节空间大小,不管是什么数据类型;在64位操作系统下,指针是占8个字节空间大小,不管是什么数据类型。

空指针和野指针

空指针:指针变量指向内存中编号为0的空间

用途:初始化指针变量

注意:空指针指向的内存是不可以访问的

 野指针:指针变量指向非法的内存空间

在程序中。尽量避免出现野指针

总结:空指针和野指针都不是我们申请的空间,因此不要访问。

const 修饰指针

1,const修饰指针:常量指针,const int * p = &a;

特点:指针的指向可以修改,但是指针指向的值不可以改。指针的指向可以指向这个内存单元,也可以更改,指向另一个内存单元。指针指向的值是指针指向的内存单元里存放的数据不可以改。

2,const修饰常量:指针常量,int * const p = &a;

特点:指针的指向不可以改,指针指向的值可以改。

3,const既修饰指针,又修饰常量,const int * const p = &a;

C++之指针变量的定义和使用的更多相关文章

  1. 【C语言入门教程】4.5 指针变量的定义与引用

    指针变量是包含内存地址的变量.一般的变量直接包含一个特定的值,而指针变量包含的是某一特定数据类型的内存地址.普通变量直接引用其中的值,指针变量则间接引用所指向内存地址中的值.指针变量在使用前需要声明与 ...

  2. C语言定义一个指针变量

    10.2.1 定义一个指针变量 对指针变量的定义包括三个内容: (1) 指针类型说明,即定义变量为一个指针变量: (2) 指针变量名: (3) 变量值(指针)所指向的变量的数据类型. 其一般形式为: ...

  3. C语言的指针变量

    C语言的指针变量 在C语言中,变量是固定范围的存储空间,它存储的是赋给他的值, 比如: ; /* 这里是定义一个整型变量a,并把12这个值存储在a的地址空间上 这个地址空间是系统随机分配的,对用户是透 ...

  4. C语言---指针变量详解1

    数据在内存中的地址也称为指针,如果一个变量存储了一份数据的指针,我们就称它为指针变量.在C语言中,允许用一个变量来存放指针,这种变量称为指针变量.指针变量的值就是某份数据的地址,这样的一份数据可以是数 ...

  5. c++学习6 指针变量

    一 指针变量的定义 *是用来修饰指针变量的,通常情况下我们定义的手法都是"类型名"+"*"+"指针变量名称". 有一种简单无脑的" ...

  6. 全面总结sizeof的用法(定义、语法、指针变量、数组、结构体、类、联合体、位域位段)

    一.前言 编译环境是vs2010(32位). <span style="font-size:18px;">#include<iostream> #inclu ...

  7. DELPHI声明一个指针变量,什么时候需要分配内存,什么时候不需要分配内存?

    DELPHI声明一个指针变量,什么时候需要分配内存,什么时候不需要分配内存?比如我定义个变量 var p:Pchar;如果这个变量声明为全局变量,需要分配内存吗?分配为局部变量,需要分为内存吗?为什么 ...

  8. oracle函数、包、变量的定义和使用、重点”结构体和数组”

    函数 实例1:输入雇员的姓名,返回该雇员的年薪 create function fun1(spName varchar2) ,); begin +nvl(comm,) into yearSal fro ...

  9. c语言学习之基础知识点介绍(十):内存空间模型、地址解释及指针变量

    一.内存 /* 内存: 存在内存里的. 内存分了N多个小空间,每个小空间1个字节 每个小空间有它自己的地址.每个地址之间差1 int类型占用4个字节,等于占了4个空间(有4个地址),不需要记住4个地址 ...

  10. C语言函数指针变量和指针函数以及指针数组

    C语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址.我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数.然后通过指针变量就可以找到并调用这 ...

随机推荐

  1. CMake出错的处理

    在windows上使用cmake来c++的程序,遇到一个问题 问题排查 试过在电脑上单独使用gcc是可以编译成功的,那么就可能是IDE集成的问题了 IDE的编译工具链从mingw换成vs,编译通过 让 ...

  2. python快速入门【三】-----For 循环、While 循环

    python入门合集: python快速入门[一]-----基础语法 python快速入门[二]----常见的数据结构 python快速入门[三]-----For 循环.While 循环 python ...

  3. C++ 实现的Ping类的封装

    Ping 使用 Internet 控制消息协议(ICMP)来测试主机之间的连接.当用户发送一个 ping 请求时,则对应的发送一个 ICMP Echo 请求消息到目标主机,并等待目标主机回复一个 IC ...

  4. node版本控制工具nvm安装教程

    一.安装nvm 查看node对应NPM:https://nodejs.org/en/about/previous-releases 1.卸载node,后删除node文件夹里的所有内容 2:安装nvm管 ...

  5. Intellij IDEA 中 .properties文件中文乱码

    在别的地方显示正常的 application.properties 文件,放到 idea 中就会有乱码,如下图所示 idea 右下角编码那里还是灰色的,不能更改 解决方法 点开 idea 的 sett ...

  6. 20.2 显示的链接到导出符号--《Windows核心编程》

    FAPPROC GetProcAddress(HMOUDLE hInstDll,PCSTR pszSymbolName); 1.根据名称 FARPROC FunctionAddress = (ULON ...

  7. 《ASP.NET Core 与 RESTful API 开发实战》-- (第9章)-- 读书笔记(上)

    第 9 章 测试和文档 9.1 测试 测试是软件生命周期中的一个非常重要的阶段,对于保证软件的可靠性具有极其重要的意义 常见的测试方法有很多,根据不同的维度,可以把测试方法分为不同的类别 从观察结构的 ...

  8. [Docker] Dockerfile常用保留字

    FROM 基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板.第一条必须是from MAINTAINER 镜像维护者的姓名和邮箱地址 RUN 容器构建时需要运行的命令,也就是在 do ...

  9. 好书推荐之《Java 核心技术:卷 1 基础知识》

    大佬推荐 <Java 核心技术:卷 1 基础知识>,这本书本来是 Sun 公司的官方用书,是一本 Java 的入门参考书. 对于 Java 初学者来说,是一本非常不错的值得时常翻阅的技术手 ...

  10. 【LGR-156-Div.3】洛谷网校 8 月普及组月赛 I & MXOI Round 1 & 飞熊杯 #2(同步赛)

    [LGR-156-Div.3]洛谷网校 8 月普及组月赛 I & MXOI Round 1 & 飞熊杯 #2(同步赛) \(T1\) luogu P9581 宝箱 \(100pts\) ...