c++指针的定义和使用

news2024/11/18 6:45:47

1、定义一个指针

int a=10;

//定义指针的语法:数据类型 * 指针变量名:int * p

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

int a = 10;

int* p;
p = &a;
cout << "a的地址为:" << &a << endl;
cout << "指针p为:" << p << endl;

2、使用指针
可以通过解引用的方式找到指针指向的内存
指针前加*代表解引用,找到指针指向的内存中的数据

cout << *p << endl;
*p = 1000;
cout << "a=" <<a << endl;
cout <<"*p="<< * p << endl;

3、指针所占的空间

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

 4、空指针和野指针

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

用途:初始化指针变量

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

int * p=NULL;

内存编号0~255为系统占用内存,不允许用户访问

cout << *p << endl

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

指针变量p指向内存地址编号为0x1100的空间

int * p =(int *)0x1100;

访问野指针保错

cout << *p << endl

5、const修饰指针

const修饰指针有三种情况

1、const修饰指针:常量指针

2、const修饰常量:指针常量

3、const即修饰指针,又修饰常量

常量指针const int * p =&a;

int a =10;

int b= 10;

int * p =&a;

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

*p=20错误

p=&b正确

指针常量 int * const p =&a;

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

*p=20正确

p=&b;错误

const即修饰指针,又修饰常量 const int * const = &a;

特点:指针的指向和指针指向的值都不可以修改

*p=20;错误

p=&b;错误

const修饰了什么,比如修饰了int * const p =&a;(*p=20就可以操作,p=&就不可以)

 6、指针和数组

利用指针访问数组里的元素

int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int* p = arr;//arr就是数组的首地址
//解引用就可以访问第一个数据
cout << "利用指针访问第一个元素:" << *p << endl;
//p++;//让指针向后偏移4个字节(为什么是4个字节,因为是int)
//cout << "利用指针访问第二个元素:" << *p << endl;

for (int i = 0; i < 10; i++)
{
	cout << *p << endl;
	p++;
}

7、指针和函数

int a = 10; int b = 20;
swap1(a, b);//值传递不会改变实参
swap2(&a, &b);//地址传递会改变实参

cout << a << endl;
cout << b << endl;

//值传递
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;
}

 

 

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

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

相关文章

python中的常用模块

os和sys模块 os和sys是Python标准库中两个非常重要的模块&#xff0c;它们提供了丰富的方法来与Python解释器以及操作系统交互。 os模块 os模块提供了许多函数&#xff0c;用于处理文件和目录等操作系统任务&#xff0c;如路径管理、执行命令、获取进程信息等。 常用方法&a…

【话题】2024年AI辅助研发趋势,有那些应用领域

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读文章&#xff01; 此篇是【话题达人】系列文章&#xff0c;这一次的话题是《2024年AI辅助研发趋势》 目录 背景概念实践医药领域汽车设计领域展望未来文章推荐 背景 随着人工智能技术的持续发展与突破&#xff0c;2024年AI辅…

如何实现接口

类实现接口 用关键字implements声明自己实现一个或 多个接口 实现 多个接口&#xff0c;用 逗号分隔开 重写接口中的方法 要求&#xff1a;类实现某个接口&#xff0c;类必须重写该接口的所有方法。 重写规则&#xff1a; 去掉public abstact修饰符 给出方法体&#xff08;具…

2024Python二级

1. 2. 前序遍历首先访问根节点再访问左子树和右子树 3. 4. sub不属于保留字 5. 6. 7. 8. continue是再重新开始进行循环&#xff0c;不是题目中所规定字母的话就对它进行输出 9. Python没有主函数的说法 10. 未转化为数据所要求的形式&#xff0c;应首先考虑eval 11. l…

力扣日记3.14-【贪心算法篇】376. 摆动序列

力扣日记&#xff1a;【贪心算法篇】376. 摆动序列 日期&#xff1a;2024.3.14 参考&#xff1a;代码随想录、力扣 376. 摆动序列 题目描述 难度&#xff1a;中等 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为 摆动序列 。第一个差&#xff08;…

【动态规划】代码随想录算法训练营第五十七天 |647. 回文子串, 516.最长回文子序列,动态规划总结篇 (待补充)

647. 回文子串 1、题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 2、文章讲解&#xff1a;代码随想录 3、题目&#xff1a; 给定一个字符串&#xff0c;你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串&#xff0c;即使…

html--彩虹马

文章目录 htmljscss 效果 html <!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title>Rainbow Space Unicorn</title> <link rel"stylesheet" href"css/style.css"> &l…

基于智慧灯杆的智慧城市解决方案(2)

功能规划 智慧照明功能 智慧路灯的基本功能仍然是道路照明, 因此对照明功能的智慧化提升是最基本的一项要求。 对道路照明管理进行智慧化提升, 实施智慧照明, 必然将成为智慧城市中道路照明发展的主要方向之一。 智慧照明是集计算机网络技术、 通信技术、 控制技术、 数据…

Kubernetes弃用Dockershim,转向Containerd:影响及如何应对

Kubernetes1.24版本发布时&#xff0c;正式宣布弃用Dockershim&#xff0c;转向Containerd作为默认的容器运行环境。Kubernetes以CRI(Container Runtime Interface)容器运行时接口制定接入准则&#xff0c;用户可以使用Containerd、CRI-O、CRI- Dockerd及其他容器运行时作为Kub…

在分布式环境中使用状态机支持数据的一致性

简介 在本文中&#xff0c;我们将介绍如何在分布式系统中使用transaction以及分布式系统中transaction的局限性。然后我们通过一个具体的例子&#xff0c;介绍了一种通过设计状态机来避免使用transaction的方法。 什么是数据库transaction Transaction是关系型数据普遍支持的…

如何利用WebRTC构建点对点的即时通讯工具

在当今竞争激烈的商业环境中&#xff0c;企业越来越需要构建自己的即时通讯工具来提升内部沟通效率和信息安全&#xff0c;减少第三方工具依赖带来的潜在风险&#xff0c;并能与自身的行业业务深入融合。 拥有专用的通讯平台能够加快信息的流动&#xff0c;提升工作协同和任务执…

【C语言】【时间复杂度】Leetcode 153. 寻找旋转排序数组中的最小值

文章目录 题目时间复杂度概念时间复杂度的计算 解题思路代码呈现 题目 链接: link 时间复杂度 概念 时间复杂度是一种函数&#xff0c;定量地描述了该算法运行的时间。既然是一种函数&#xff0c;就涉及到自变量与因变量。因变量代表是时间复杂的规模&#xff0c;自变量是…

HTTP代理的特性、功能作用是什么样的?

在当今互联网时代&#xff0c;HTTP代理作为网络通信中的一项重要技术&#xff0c;在各行各业都有着广泛的应用。然而&#xff0c;对于许多人来说&#xff0c;HTTP代理的特性和功能作用并不十分清晰。在本文中&#xff0c;我们将深入探讨HTTP代理的各种特性和功能&#xff0c;帮…

Linux系统Docker部署Plik系统结合内网穿透实现公网访问本地文件

文章目录 1. Docker部署Plik2. 本地访问Plik3. Linux安装Cpolar4. 配置Plik公网地址5. 远程访问Plik6. 固定Plik公网地址7. 固定地址访问Plik 本文介绍如何使用Linux docker方式快速安装Plik并且结合Cpolar内网穿透工具实现远程访问&#xff0c;实现随时随地在任意设备上传或者…

jenkins+maven+gitlab自动化构建打包、部署

Jenkins自动化部署实现原理 环境准备 1、jenkins已经安装好 docker安装jenkins 2、gitlab已经安装好 docker安装gitlab 一、Jenkins系统配置 1.Global Tool Configuration 任务构建所用到的编译环境等配置&#xff0c;配置参考&#xff1a; jdk配置&#xff08;jenkins自带…

C# ListView 控件使用

1.基本设置 listView1.Columns.Add("序号", 60); //向 listView1控件中添加1列 同时设置列名称和宽度listView1.Columns.Add("温度", 100); //下同listView1.Columns.Add("偏移", 100);listView1.Columns.Add("分割", 50);listView1…

广州虚拟动力 | AI智能交互型虚拟数字人解决方案

广州虚拟动力整合自研的AI数字人技术与AI大语言模型技术&#xff0c;推出AI智能交互型虚拟数字人解决方案&#xff0c;面向旅游景区、博物馆、银行、医院、营业厅、酒店住宿、大型商场等&#xff0c;以AI数字人为载体&#xff0c;承担公共服务职能&#xff0c;根据各行业特性和…

学习Java的第十天

本章来讲一下什么是字符串 一、什么是字符串 在Java中&#xff0c;最常见的基本类型就是字符串了&#xff0c;哪哪都能见到&#xff0c;如输入语句&#xff0c;输出语句等&#xff01;那么&#xff0c;什么是字符串呢&#xff0c;字符串就是String类&#xff0c;String类是Ja…

1361:产生数(Produce)

【解题思路】 1、将数字拆分保存在数组中&#xff0c;而后转换每一位。 2、将数字变化规则保存在x、y两个一维数组中&#xff0c;x[i]到y[i]是一种转换规则。 3、从n的初始值开始搜索&#xff0c;对n做数字拆分&#xff0c;将拆分后的各位数字保存在一个数组中。针对数组中的每…

使用timm库的一些知识点

timm&#xff08;Torch Image Models&#xff09;是一个在PyTorch上构建的图像模型库&#xff0c;它提供了一系列预训练的深度学习模型&#xff0c;使得研究人员和开发者可以方便地进行图像分类、目标检测等任务。 使用timm库创建模型时&#xff0c;如何确定模型的名字 使用…