指 针

news/2024/4/30 4:23:45/文章来源:https://blog.csdn.net/weixin_47328424/article/details/129043806

1.指针

指针的作用: 可以通过指针间接访问内存(可以通过指针的保存一个地址(指针--地址))

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

可以利用指针变量保存地址

指针变量的定义和使用

指针变是定义语法: 数据类型 * 变量名;

//1.定义一个指针

int a = 99;

int *r;

r = &a;//让指针记录变量a的地址

cout << "a的地址为:" << &a << endl;

cout << "指针r为:" << r << endl;

cout << "指针r指向的值为:" << *r << endl;

//2.使用指针

// 可以通过解引用的方式来找到指针指向的内存

// 指针前加 *代表解引用,找到指针指向的内存中的数据

*r = 66;

cout << "a=" << a << endl;

cout << "*r=" << *r << endl;

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

在64位操作系统下,指针是占8个字节空间大小

2.空指针和野指针

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

用途: 初始化指针变量

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

//1、空指针用于给指针变量进行初始化

int *p = NULL;

//2、空指针是不可以进行访问的

//0~255之间的内存编号是系统占用的,因此不可以访问

//*p = 563;

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

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

//野指针(常见错误),尽量避免

int *r = (int*)0x112;

//报错

cout << *r << endl;

3.const修饰指针

有三种情况:

1). const修饰指针--常量指针

特点:指针的指向可以设改,但是指针指向的值不可以改

int a =10;int b=20;int c=32;

const int *p=&a;

*p=12;//错误,指针指向的值不可以改

p=&b;//正确,指针指向可以改

2). const修饰常量---指针常量

int * const p2=&a;

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

*p2= 20;//正确,指向的值可以改

p2=&a;//错误,指针指可不可以改

3). const即修饰指针,又修饰常量

const int *const p3 = &a ;

指针的指向 和指针指向的值都不可以改

// *p3 = 100;//错误

//p3= &b;//错误

看const右侧紧跟着的是指针还是常量,是指针就是常量指针,是常量就是指针常量

4.指针和数组

作用:利用指针访问数组中元素

int arr[] = { 1,2,4,8,6,9,7,4 };

int *q = arr;//指向数组的第一个元素

//遍历输出

for (int i = 0;i < 8;i++) {

cout << *q << endl;

q++;

}

5.指针和函数

作用: 利用指针作函数参数,可以修改实参的值

//值传递

void swap1(int a, int b) {

int temp = a;

a = b;

b = temp;

}

//地址传递

void swap2(int* p1, int* p2) {

int temp = *p1;

*p1 = *p2;

*p2 = temp;

}

int a = 10;

int b = 20;

swap1(a, b);// 值传递不会改变实参

swap2(&a, &b);//地址传递会改变实参

cout << "a = " << a << endl;

cout<< "b =" << b << endl;

6.例子

//冒泡排序

void bubbleSort(int *arr,int len) {

for (int i = 0;i < len - 1;i++) {

for (int j = 0;j < len - i - 1;j++) {

//判断大小

if (arr[j]>arr[j+1]) {

int temp = arr[j + 1];

arr[j + 1] = arr[j];

arr[j] = arr[temp];

}

}

}

}

void printArray(int *arr,int len) {

for (int i=0;i < len - 1;i++) {

cout << i << endl;

}

}

void example() {

//创建数组

int arr[8] = { 4,5,6,2,5,7,6,3 };

int len =sizeof(arr)/sizeof(arr[0]) ;//长度

bubbleSort(arr, len);//排序

printArray(arr,len);//打印

}

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

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

相关文章

【项目精选】基于Javaee的影视创作论坛的设计与实现(视频+论文+源码)

点击下载源码 基于Javaee的影视创作论坛的设计与实现主要用功能包括&#xff1a; 首页推荐、用户管理、影片管理、评论管理、 预告片管理、海报管理、公告管理、数据检索、用户注册与登录等等功能、统结构如下 &#xff08;1&#xff09;后台管理: 管理模块&#xff1a;管理员…

碰撞检测算法分类

包围形法粗糙检测, 包含以下两种类检测外接圆法轴对齐包围矩形&#xff0c; AABB 碰撞检测算法之包围形法分离轴精细检测 BOX vs PolygonOBBseparating Axis Theorem碰撞检测算法之分离轴定理GJKGJK&#xff08;Gilbert–Johnson–Keerthi&#xff09;, 相比 SAT 算法&#xff…

jvisualvm工具使用

jdk自带的工具jvisualvm&#xff0c;可以分析java内存使用情况&#xff0c;jvm相关的信息。 1、设置jvm启动参数 设置jvm参数**-Xms20m -Xmx20m -XX:PrintGCDetails** 最小和最大堆内存&#xff0c;打印gc详情 2、测试代码 TestScheduleClassGc package com.core.schedule;…

华为OD面试经验分享,尤其注意机试题部分

文章目录招聘流程和背景介绍面试准备机试题目类型和解答技巧在算法部分在操作系统部分面试官提问和答题技巧面试总结和建议推荐一些华为 od 常见的机试题题目&#xff1a;两数之和题目&#xff1a;二叉树的遍历题目&#xff1a;链表反转题目&#xff1a;最大子序和招聘流程和背…

C语言之结构体内存的计算

结构体的内存 一.提出疑问 结构体占用的是一片连续的内存空间&#xff0c;大小是由成员变量的类型决定的。但并不是计算所有成员变量的类型大小之和那么简单。 先举一个实例&#xff1a; struct student {int age; //4个字节int telephone; //4个字节 }; int main() {struc…

jhipster自动生成java代码的方法

一、前言 java springboot后台项目用到了jpa查询数据库&#xff0c;还用到了jhipster&#xff0c;这个东西可以自动生成基础的Controller、Service、Dao、JavaBean等相关代码&#xff0c;减少重复开发。 在此总结下使用方法。 二、jhipster自动生成java代码的方法 1.需要先…

ShardingSphere-Proxy5 根据时间分表

0、软件版本 ShardingSphere-Proxy&#xff1a; 5.2.0 MySQL&#xff1a; 8.0.30 系统&#xff1a; win10 1、ShardingSphere-Proxy下载 我们可以在 官网 找到最新版ShardingSphere-Proxy下载&#xff0c;也可以在ShardingSphere仓库中下载 2、ShardingSphere-Proxy配置 …

哈希

一、unordered系列关联式容器 set、map / unordered_set、unorder_map 区别&#xff1a; set、map底层结构是红黑树&#xff0c;unordered_set、unorder_map底层结构是哈希表unordered系列是&#xff1a;无序、单向迭代器、效率高( O(1) )每个容器都自身提供swap成员函数&am…

用主动游泳的三维水母模型量化美杜莎的(medusan)机械空间的性能(二)(2017)

文章目录用主动游泳的三维水母模型量化美杜莎的&#xff08;medusan&#xff09;机械空间的性能&#xff08;二&#xff09;(2017)原文链接&#xff1a;https://doi.org/10.1017/jfm.2017.3结果3.1 参考案例的游泳动力学3.2 改变钟的主动和被动材料属性3.2.1 改变施加的张力3.2…

virtuoso数据库介绍

在国内&#xff0c;对海量 RDF 数据的管理有着迫切的实际需求&#xff1b; RDF&#xff1a;Resource Description Framework&#xff0c;是一个使用XML语法来表示的资料模型(Data model)&#xff0c;用来描述Web资源的特性&#xff0c;及资源与资源之间的关系。 Virtuoso可以对…

LINUX内核链表

LINUX内核链表 一、传统链表的缺陷 传统的双向循环链表概念简单&#xff0c;操作方便&#xff0c;但存在有致命的缺陷&#xff0c;用一句话来概括就是&#xff1a; 每一条链表都是特殊的&#xff0c;不具有通用性。换句话说&#xff0c;对于每一种不同的数据&#xff0c;所构…

VMware安装Linux虚拟机后忘记root密码处理方法

OS版本&#xff1a;Red Hat 7.7 问题说明&#xff1a; 之前用VMWare安装了一台Linux虚机&#xff0c;由于长期没使用&#xff0c;导致忘记了root密码。所以需要修改root密码。 Root密码修改 现将修改root密码的操作步骤记录如下。 1.启动虚拟机&#xff0c;出现启动倒计时…

Git 基本操作之Git GUI界面和git命令行如何选择

1. 为啥推荐使用git命令行 我发现公司有很多的同事都喜欢使用git的GUI界面工具&#xff0c;喜欢鼠标点点点就完成了代码的提交&#xff0c;这种方式的确是比较简单便捷&#xff0c;但是却存在风险。先上一个事故给大家醒醒脑。 VScode Git 界面操作引发的惨案 上面的惨案是VS…

一种基于加密域的数字图像水印算法的设计与实现(附Matlab源码)

一种基于加密域的数字图像水印算法的设计与实现 项目介绍 毕设项目 题目&#xff1a;一种基于加密域的数字图像水印算法的设计与实现 随着数字媒体技术的发展&#xff0c;数字媒体版权的保护得到了越来越多人的重视&#xff0c;数字水印技术作为数字媒体版权保护的有效手段…

JavaScript 教程导读

JavaScript 是 Web 的编程语言。所有现代的 HTML 页面都使用 JavaScript&#xff0c;可以用于改进设计、验证表单、检测浏览器、创建cookies等。JavaScript 非常容易学。本教程将教你学习从初级到高级JavaScript知识。JavaScript 在线实例本教程包含了大量的 JavaScript 实例&a…

如何用P6软件编制项目进度计划(下)

卷首语 根据项目合同包含的工作范围进行工作分解&#xff08;WBS&#xff09;&#xff0c;按照业主的要求及项目管理的需要&#xff0c;考虑不同阶段和层次&#xff0c;适时编制出项目管理所要求的的各级进度计划。 4搜集项目计划与进度控制相关信息 搜集与项目计划编制与进…

计算机SCI期刊审稿人,一般关注论文的那些问题? - 易智编译EaseEditing

编辑主要关心&#xff1a; &#xff08;1&#xff09;文章内容是否具有足够的创新性&#xff1f; &#xff08;2&#xff09;文章主题是否符合期刊的受众读者&#xff1f; &#xff08;3&#xff09;文章方法学是否合理&#xff0c;数据处理是否充分&#xff1f; &#xff08;…

谷歌seo快速排名优化方法?谷歌seo排名技巧

本文主要分享关于谷歌seo排名如何快速提升的一些技巧。 本文由光算创作&#xff0c;有可能会被修改和剽窃&#xff0c;我们佛系对待这种行为吧。 谷歌seo快速排名优化方法&#xff1f;谷歌seo排名有什么技巧&#xff1f; 答案是&#xff1a;持续建设GPB外链可有效提升谷歌排…

TCP的拥塞控制算法之一:慢启动算法、拥塞避免算法

目录 什么是拥塞控制&#xff0c;为什么需要拥塞控制 慢启动 拥塞避免 什么是拥塞控制&#xff0c;为什么需要拥塞控制 拥塞通常是指从随着网络中的主机增加其发送速率并因为网络的原因使网络变得十分拥挤&#xff0c;此时会经常发生丢包现象&#xff0c;导致网络的传输效率…

Spring Boot集成Quartz实现定时任务的动态创建、启动、暂停、恢复、删除

一、整个 Quartz 的代码流程基本基本如下&#xff1a;首先需要创建我们的任务(Job)&#xff0c;比如取消订单、定时发送短信邮件之类的&#xff0c;这是我们的任务主体&#xff0c;也是写业务逻辑的地方。创建任务调度器(Scheduler)&#xff0c;这是用来调度任务的,主要用于启动…