C++灵魂->指针

C++灵魂->指针

    • 地址
    • 指针
          • 野指针
          • 空指针 【内存动态分配】
          • 指针变量的运算(+,-,++,--)
    • 指针与一维数组

地址

计算机将内存以单个字节为单位分开,并对每个字节进行唯一性编号,那么这个编号就是地址。

  1. 取地址的运算符:& 单目运算符
  2. 首地址,一段内存空间中第一个存储单元的地址【不是第一个变量】

指针

定义指针变量:数据类型 * 变量名    /*表示定义一个变量(指针变量)指向该数据类型*/
例如: int *p    /*p保存一个int类型变量的地址*/
int a = 10;
指针变量赋值  p = &a;  /*p保存a的地址*/
指针访问变量值  int b = *p;   /*访问p中保存地址上的值*/
  1. 指针变量用来存放地址的变量
  2. 内存大小为4字节
  3. 在定义指针变量时的*只是表明该变量是个指针变量,没有实际功能【为要区别指针变量解引用符号】
野指针

不能明确指向的指针变量,即保存的地址是不确定的

  1. 为避免可以定义指针时,让其指向NULL;即 int *p = NULL;
空指针 【内存动态分配】

不能明确指向的内存要存储的数据类型,即void*

指针变量的运算(+,-,++,–)

指针变量的运算只是指针的偏移,指针之间的运算没有意义

  1. 指针变量的加减,是以该指针指向类型的空间单位进行偏移的【不是每次偏移都只是一个字节】

指针与一维数组

下面是指针数组取值的三种代码方式:

  1. 第一种方式看着和平时的数组索引遍历代码相同,其实是不同的,p[i]就相当于*(p+i)。
  2. 后两种方式其实是一样的,因为+号的优先级低于*号,所以要用(),根据首地址偏移来获取每个地址对应的值。
#include <iostream>using namespace std;int main()
{int array[4] = {13,14,35,33};int *p = array;    //相当于int *p1 = &array[0]int *p1 = &array[1];cout<<array<<endl;  //数组名相当于数组首地址cout<<*p<<endl;    //返回数组首地址上的值cout<<*p1<<endl;	   //返回数组首地址偏移4个字节上的值cout<<"//"<<endl;for (int i = 0; i < 4; i++){cout<<p[i]<<endl;}cout<<"//"<<endl;for (int i = 0; i < 4; i++){cout<<*(p+i)<<endl;}cout<<"//"<<endl;for (int i = 0; i < 4; i++){cout<<*p++<<endl;}system("pause");
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cpython cython_python – 优化Cython中的字符串

我建议你在cpython.array.arrays上进行你的操作.最好的文档是C API和Cython源码,我太懒了链接了.from cpython cimport arraydef cfuncA():cdef str acdef int i,jfor j in range(1000):a .join([chr(i) for i in range(127)])def cfuncB():cdef:str aarray.array[char] arr,t…

团队协作小结

0.前提&#xff1a;协作目标保持一致&#xff0c;目标理解一致。 1.量化工作内容&#xff0c;以工作量算&#xff0c;可以适当结合成员自身特点划分内容。 2.职责明确&#xff0c;工作块必须有一名负责人&#xff0c;不要搞多人化&#xff0c;防止责任推诿。 转载于:https://ww…

TCP解决粘包问题(结构数据封包拆包)

TCP封包拆包前言封包一、包结构二、封包方法拆包总结前言 TCP协议(Transmission Control Protocol&#xff09;是一种面向连接的、可靠的、基于字节流的通信协议&#xff0c;即TCP采用字节流的方式&#xff0c;以字节为单位传输字节序列。 如果简单的发送长串的数据流&#xf…

mac下nvm_mac中nvm的安装和使用

nvm 是 Mac 下的 node 管理工具&#xff0c;如果是管理 Windows 下的 node&#xff0c;可以使用 nvmw 或 nvm-windows 。一、若电脑中已安装node,需先卸载。参考学习的文档&#xff1a;http://blog.csdn.net/zjuwwj/article/details/72805671npm ls -g --depth0# 查看已经安装在…

求交错序列前N项和(15 分)

7-2 求交错序列前N项和&#xff08;15 分&#xff09; 本题要求编写程序&#xff0c;计算交错序列 1-2/33/5-4/75/9-6/11... 的前N项之和。 输入格式: 输入在一行中给出一个正整数N。 输出格式: 在一行中输出部分和的值&#xff0c;结果保留三位小数。 输入样例: 5输出样例: 0.…

拆包--缓冲区查找包头及包尾偏移

缓冲区查找包头及包尾偏移前言一、采用动态数组QByteArray的自带函数二、采用字节对比方法测试代码前言 根据前面所讲的内容封包拆包&#xff0c;当将网络中的数据读出存储在自定义缓冲区QByteArray中&#xff0c;则对数据包进行拆分。则首先要进行的工作就是找到包头的位置及…

5自适应单页源码_超详细!如何建立一个CPA单页网站,附高转化CPA模板源码

做CPA的老手一般都会建立一个CPA单页站&#xff0c;用来提升转化&#xff0c;提高推广质量。今天教大家搭建一个完整的CPA单页站搭建一个网站需要3样东西&#xff1a;域名服务器网站源码一、购买域名域名就是你网站的地址&#xff0c;建议从万网购买就可以&#xff0c;比较方便…

20154319 《网络对抗技术》后门原理与实践

一、实验说明 任务一&#xff1a;使用netcat获取主机操作Shell&#xff0c;cron启动 (0.5分) 任务二&#xff1a;使用socat获取主机操作Shell, 任务计划启动 (0.5分) 任务三&#xff1a;使用MSF meterpreter&#xff08;或其他软件&#xff09;生成可执行文件&#xff0c;利用…

强制类型转换的取整及四舍五入取整

强制类型转换取整相关前言取整方法例&#xff1a;(signed int)double四舍五入取整前言 开发中一般运算过程都采用浮点类型数据以免出现运算不精确的错误&#xff0c;而当运算结果需要时整型的时候就需要对浮点类型的结果进行取整处理&#xff0c;而取整的方法有向上取整&#…

github电脑壁纸_GitHub - githubtaotao/bing-wallpaper: Bing每日壁纸,自动获取Bing的精美图片设置为壁纸,并且支持随机切换历史壁纸,查看壁纸故事...

Bing每日壁纸发布一个开源小软件&#xff0c;Bing每日壁纸。该小软件可以自动获取Bing的精美图片设置为壁纸&#xff0c;并且支持随机切换历史壁纸&#xff0c;查看壁纸故事。欢迎大家下载使用&#xff0c;点star&#xff01;有问题请留言或者提issue。想了解技术原理的请看 技…

关于字节对齐

关于字节对齐前言意义自定义字节对齐存储空间内存读取效率平台适应性结论前言 计算机中的内存空间大小是以字节&#xff08;byte&#xff09;为基本单位划分的&#xff0c;从理论上讲似乎对任何类型的变量的访问可以从任何地址开始&#xff0c;而计算机并非逐字节大小读写内存…

c++中的多线程

使用 std::thread 时需要包含 #include<thread> 头文件&#xff0c;定义了表示线程的类、用于互斥访问的类与方法等。 参考网址&#xff1a; https://blog.csdn.net/liuker888/article/details/46848905https://blog.csdn.net/fengbingchun/article/details/73393229成员…

C++ reverse memcpy

C reverse memcpy前言基于QT的测试样例结果前言 C 实现翻转memcpy 基于QT的测试样例 代码如下&#xff1a; #include <iostream> #include <QtCore/QCoreApplication> #include <QDebug>using namespace std;void *reversememcpy(void *out, const void *…

打架程序_学生打架不知道怎么处理?一般程序了解下,对你或许有帮助

很多新老师&#xff0c;对处理学生问题的步骤其实还不是很了解&#xff0c;一遇到学生问题就很苦恼&#xff0c;用的方法很多&#xff1a;或劝、或骂、或赏、或罚&#xff0c;但总是觉得不得要领。今天我想通过昨天我处理的一个实例&#xff0c;针对性的聊一聊这个问题。希望对…

提高应用程序稳定的小内容

用于提高应用程序稳定的小小要点要点内容&#xff1a;要点内容&#xff1a; 动态内存分配完后&#xff08;new&#xff09;&#xff0c;注意一个使用完的内存要对应一个delete&#xff0c;防止内存泄漏。当用QByteArray等数组结构来存储缓存时&#xff0c;缓存被读取后注意要清…

android旋转动画的两种实现方式

在android开发&#xff0c;我们会常常使用到旋转动画&#xff0c;普通情况下旋转动画有两种实现方式&#xff0c;一种是直接通过java代码去实现&#xff0c;第二种是通过配置文件实现动画。以下是两种动画的基本是用法&#xff1a; 纯Java代码实现&#xff1a; //创建旋转动画 …

jsp中设置自动换行_办公技巧—Word中如何设置自动生成序号

我们经常会用到Word来编辑文档&#xff0c;经常需要在文档中插入各种序号。如果一个个手动输入这些序列号&#xff0c;会降低我们的工作效率。那么&#xff0c;这种情况下&#xff0c;我们该怎么办呢&#xff1f;今天&#xff0c;小编就教各位Word中设置自动生成序号的小技巧&a…

js实现table合并相同列单元格

/** * Created with JetBrains WebStorm. * User: Johnny * Date: 18-3-26 * Time: 下午4:48 * Table td 相同值合并行 要求&#xff1a; * 1.table 必须包含tbody&#xff0c;tbody为数据主休 * 2.table 添加 id"kbdatas" * 调用说明: * $(function(){ * mergeRowSp…

mongodb如何根据字段(数组类型)的长度排序_大数据存储技术选型(七)——MongoDB设计模式及索引优化...

关系数据库的时代关系数据库的设计理念假设你有一台车&#xff0c;你需要给它存起来&#xff0c;给它找个停车位。传统数据库的存储方式就相当于&#xff0c;把这个车的所有零件拆下来&#xff0c;放在存放对应零件的盒子里&#xff0c;需要用的时候&#xff0c;再把他们取出来…

boot返回码规范 spring_sprigboot-new-coding-standards

sprigboot-new-coding-standards介绍SpringBoot脚手架&#xff0c;遵守严格的代码规范。规范详细说明1.遵循标准RESTful API2.异常采用枚举进行封装(业务内部异常往上抛&#xff0c;返回客户端需要将对应的异常转换为具体的状态的&#xff0c;这里介绍Spring提供的全局异常处理…