当前位置: 首页 > news >正文

【C/C++ 学习笔记】指针

【C/C++ 学习笔记】指针

视频地址: Bilibili

概念

  • 可以通过指针间接访问内存
  • 用于保存地址

使用

通过 & 可以获取数据的指针
通过 * 可以取得指针的数据

指针的数据类型就是 数据类型 *

int number = 10;int *p = &number;// 10
cout << "number: " << number << endl;
// 000000149F0FF960
cout << "p: " << p << endl;
// 10
cout << "p's number : " << *p << endl;

内存

32 位占 4 个字节,64 位占 8 个字节

空指针

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

  • 用于初始化指针变量
  • 空指针的内存数据无法访问
int *p = NULL;
// ERROR!
// &p = 100;

野指针

指针变量指向非法的内存空间,无法确定是否能够使用

// ERROR
int *p = (int *)0x1100;

const 修饰指针

  • const 修饰指针 -> 常量指针

    • 指针的指向可以修改,但是指针指向的值不能修改

      // const 修饰指针
      int a1 = 10;
      int b1 = 10;
      const int *p1 = &a1;// ERROR
      // *p1 = 20;
      // PASS
      p1 = &b1;
      
  • const 修饰常量 -> 指针常量

    • 指针的指向不可以修改,但是指针指向的值可以修改

      // const 指针常量
      int a2 = 10;
      int b2 = 10;
      int *const p2 = &a2;// PASS
      *p2 = 20;
      // ERROR
      // p2 = &b2;
      
  • const 修饰指针&常量

    • 指针的指向不可以修改,并且指针指向的值也不可以修改

      const int *const p3 = &a3;
      

指针和数组

数组名就是指向数组的首地址

int arr[] = {1, 2, 3, 4, 5};
int *p3 = arr;cout << "p3: " << *p3 << "   arr[0]: " << arr[0] << endl;
// p + 1 导致指针向后移动 4 个字节
cout << "p3: " << *(p3 + 1) << "   arr[0]: " << arr[1] << endl;

指针和函数

通过指针传参可以修改原数据

int add1(int a, int b) {a++;b++;return a + b;
}int add2(int *a, int *b) {*a = *a + 1;*b = *b + 1;return *a + *b;
}
int a = 10;
int b = 20;// 不修改原值
cout << "add1: " << add1(a, b) << endl;
// 10 20
cout << "a: " << a << "  b: " << b << endl;// 修改原值
// 32
cout << "add2: " << add2(&a, &b) << endl;
// 11 21
cout << "a: " << a << "  b: " << b << endl;

冒泡排序:

void bubble(int *arr, int len) {for (int i = 0; i < len; i++) {for (int j = 0; j < len - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];*(arr + j) = arr[j + 1];*(arr + j + 1) = temp;}}}}

相关文章:

【C/C++ 学习笔记】指针

【C/C 学习笔记】指针 视频地址: Bilibili 概念 可以通过指针间接访问内存用于保存地址 使用 通过 & 可以获取数据的指针 通过 * 可以取得指针的数据 指针的数据类型就是 数据类型 * int number 10;int *p &number;// 10 cout << "number: " …...

【Node.js从基础到高级运用】十二、身份验证与授权:JWT

身份验证与授权是现代Web应用中不可或缺的部分。了解如何在Node.js应用中实施这些机制&#xff0c;将使你能够构建更安全、更可靠的应用程序。本文将引导你通过使用JWT实现用户注册、登录和权限控制的过程。 JWT&#xff08;Json Web Token&#xff09; JWT是一种用于双方之间…...

蓝桥杯刷题|01入门真题

[蓝桥杯 2020 省 AB1] 解码 题目描述 小明有一串很长的英文字母&#xff0c;可能包含大写和小写。 在这串字母中&#xff0c;有很多连续的是重复的。小明想了一个办法将这串字母表达得更短&#xff1a;将连续的几个相同字母写成字母 出现次数的形式。 例如&#xff0c;连续…...

Python Django相关解答

问题&#xff1a;什么是django&#xff1f; Django是一个开源的高级web框架&#xff0c;皆在快速开发安全可维护的网站。他鼓励快速开发&#xff0c;并遵循“don’t repeat yourself”DRY原则 Django的MTV架构是什么 Django遵循MTV(模型-模板-试图)架构模式。模型&#xff08;…...

在Linux/Ubuntu/Debian中使用7z压缩和解压文件

要在 Ubuntu 上使用 7-Zip 创建 7z 存档文件&#xff0c;你可以使用“7z”命令行工具。 操作方法如下&#xff1a; 安装 p7zip&#xff1a; 如果你尚未在 Ubuntu 系统上安装 p7zip&#xff08;7-Zip 的命令行版本&#xff09;&#xff0c;你可以使用以下命令安装它&#xff1a;…...

设计一些策略和技术来防止恶意爬虫

当涉及到反爬虫时&#xff0c;我们需要设计一些策略和技术来防止恶意爬虫访问我们的网站。以下是一个简单的反爬虫框架示例&#xff0c;供您参考&#xff1a; import requests from bs4 import BeautifulSoup import timeclass AntiScrapingFramework:def __init__(self, targ…...

elasticsearch常见问题:xpack.security.transport.ssl、unknown setting [node.master]

文章目录 引言I 安装elasticsearch1.1 安装Master Node1.2 安装Slave nodeII elasticsearch常见问题2.1 invalid configuration for xpack.security.transport.ssl2.2 server ssl configuration requires a key and certificate2.3 unknown setting [node.master]III Kibana启动…...

LLM(大语言模型)——Springboot集成文心一言、讯飞星火、通义千问、智谱清言

目录 引言 代码完整地址 入参 出参 Controller Service Service实现类 模型Service 入参转换类 文心一言实现类 讯飞星火实现类 通义千问实现类 智谱清言实现类 引言 本文将介绍如何使用Java语言&#xff0c;结合Spring Boot框架&#xff0c;集成国内热门大模型API&am…...

什么是堆?什么是栈?

在计算机科学中&#xff0c;"堆&#xff08;heap&#xff09;"和"栈&#xff08;stack&#xff09;"是两种用于存储数据的数据结构&#xff0c;它们在内存管理中扮演着不同的角色。 堆&#xff08;Heap&#xff09;&#xff1a; 动态分配内存&#xff1a…...

【镜像转存】利用交互式学习平台killercoda转存K8S镜像至Docker私人仓库

文章目录 1. 镜像转存需求2. 注册并登陆 killercoda URL3. 打开playground4. 在线拉取K8S镜像并打上标签5. 推送K8S镜像到Docker私有仓库6. 登陆Docker私有仓库查看 1. 镜像转存需求 因K8S镜像在不开代理的情况下&#xff0c;拉取超时、下载缓慢&#xff0c;导致镜像拉取不下来…...

ov多域名SSL数字证书1200元一年送一月

随着互联网的发展&#xff0c;不论是个人用户还是企事业单位都不止有一个网站&#xff0c;为了保护网站安全&#xff0c;就需要为网站安装SSL证书&#xff0c;而SSL证书中的通配符SSL证书和多域名SSL证书都可以同时保护多个域名站点。其中&#xff0c;多域名SSL证书可以同时保护…...

MySQL 系统变量查看与设置(System Variables Configuration)

MySQL中有大量的系统变量控制服务器的行为&#xff0c;大部分的系统变量是不需要我们调整的&#xff0c;保持默认即可。但为了获得更高的性能和稳定性&#xff0c;有时需要适当对部分变量进行调整&#xff0c;本文总结了MySQL中系统变量的查看与设置方法。 目录 一、变量的类型…...

【Docker】apache 容器化部署

Apache环境标准软件基于Bitnami apache 构建。当前版本为2.4.58 你可以通过轻云UC部署工具直接安装部署&#xff0c;也可以手动按如下文档操作&#xff0c;该项目已经全面开源&#xff0c;可以从如下环境获取 配置文件地址: https://gitee.com/qingplus/qingcloud-platform Q…...

基于element-plus +腾讯云COS实现图片上传

① 首先基于element-plus里面的:http-request"upload"自定义封装事件写一个点击事件之后基于腾讯云的 登录 对象存储控制台 &#xff0c;创建存储桶。获取存储桶名称和 地域名称登录 访问管理控制台 &#xff0c;获取您的项目 SecretId 和 SecretKey。在项目中安装 …...

Kafka模拟器产生数据仿真-集成StructuredStreaming做到”毫秒“级实时响应StreamData落地到mysql

这是仿真过程某图&#xff1a; 仿真实战kafka kafka消费sink端和StructuredStreaming集成通信成功 &#xff0c; 数据接收全部接收 数据落地情况&#xff1a; 全部接收到并all存入mysql 下面就简单分享一下StructuredStreaming代码吧 import org.apache.spark.sql.function…...

IDEA如何删除git最新一次远程提交

IDEA如何删除git最新一次远程提交 选择应用 -> Git -> Show History 选择最新提交上一次提交 -> Reset Current Branch to Here… Reset 提示框选择 Hard push到远程分支 -> 选择Force Push 结果验证 &#xff08;最新分支已被删除&#xff09;...

什么是单向数据流

单向数据流是一种数据流动的模式&#xff0c;通常用于前端框架&#xff08;如 React、Vue 等&#xff09;中。在单向数据流中&#xff0c;数据只能从一个方向流向另一个方向&#xff0c;不会出现数据的双向流动。这种模式有助于简化数据的管理和状态的维护&#xff0c;提高代码…...

Qt 线程池 QThreadPool

一.Qt 线程池 QThreadPool介绍 Qt线程池是一种管理多个线程的并发编程模型&#xff0c;通过使用线程池可以提高性能、控制并发度、提供任务队列和简化线程管理。 在Qt中&#xff0c;线程池的使用主要涉及以下几个步骤&#xff1a; 创建任务类&#xff1a;需要定义一个任务类&am…...

【兔子机器人】实现从初始状态到站立

一、遥想星空up主的方法 由于我有卡位结构&#xff0c;无法做到劈腿&#xff0c;而且底盘也不一样&#xff0c;无法使用此方法 但是其代码思想是可以借鉴的。 参考视频&#xff1a; 【【开源啦&#xff01;】无刷轮腿平衡机器人】 【精准空降到 01:16】 https://www.bilibili…...

ImportError: cannot import name ‘open_filename‘ from ‘pdfminer.utils‘已搞定

报错内容 ImportError: cannot import name ‘open_filename’ from ‘pdfminer.utils’ 第一步&#xff1a;pip uninstall pdfminer 解决办法 pip3 install pdfminer.six注意不要 pip install pdfminer.six是安装不了的...

惠普OMEN游戏本性能控制终极指南:5分钟解锁风扇调速与功耗限制

惠普OMEN游戏本性能控制终极指南&#xff1a;5分钟解锁风扇调速与功耗限制 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub …...

AI智能体:从概念到现实的技术演进与应用前景

AI智能体正渐渐从科幻概念转变成现实应用里的关键角色&#xff0c;这是随着人工智能技术的快速发展而出现的情况。按照2024年发布的报告来看&#xff0c;全球已经存在超过67%的企业其正在规划或者早已经部署了和AI智能体相关的项目&#xff0c;预计到2026年的时候&#xff0c;这…...

麒麟KYLINOS V10 SP1开机自动登录保姆级教程:图形界面与命令行两种方法详解

麒麟KYLINOS V10 SP1开机自动登录全攻略&#xff1a;从原理到实战的双轨配置方案每次开机都要输入密码&#xff0c;对于家庭媒体中心或特定测试环境用户来说&#xff0c;确实是个效率瓶颈。KYLINOS作为国产操作系统的代表&#xff0c;其V10 SP1版本通过LightDM显示管理器提供了…...

3步掌握终极AMD Ryzen调试工具:免费解锁硬件深层控制

3步掌握终极AMD Ryzen调试工具&#xff1a;免费解锁硬件深层控制 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://git…...

Windows Defender移除工具深度解析:3步彻底禁用微软安全组件,性能飙升30%的终极方案

Windows Defender移除工具深度解析&#xff1a;3步彻底禁用微软安全组件&#xff0c;性能飙升30%的终极方案 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地…...

Arduino入门教程十三|自制模拟传感器(分压原理详解+光敏夜灯+constrain范围限制)

我整理了一套Arduino 零基础 从入门到高级 完整系统课程,包含视频讲解、全套源码、接线图纸、库文件、ESP32/ESP32-S3 摄像头 & 物联网实战项目,循序渐进,新手也能零基础吃透。需要系统学习可以查看我主页专属课程(零基础保姆级Arduino教程从入门到实战_在线视频教程-C…...

LangGraph多智能体能力路由:动态专家选择与负载均衡

LangGraph多智能体能力路由&#xff1a;动态专家选择与负载均衡一、引言 钩子 你是否遇到过这种情况&#xff1a; 当你构建了一个由多个大模型或专业Agent组成的“超级团队”——有的精通数学推理、有的擅长代码生成、有的是情感分析小能手、还有的能写长篇技术文档——却发现整…...

相对噪声模型下梯度下降的收敛性分析与实践指南

1. 项目概述&#xff1a;当梯度方向遇上相对噪声在机器学习和优化的世界里&#xff0c;梯度下降算法就像我们手中的指南针&#xff0c;指引着我们在复杂的高维地形中寻找最低点。但现实往往没那么理想&#xff0c;这个指南针的指针会晃动&#xff0c;我们得到的梯度方向总带着“…...

超新星遗迹光学辐射特征的主控因素:环境密度与磁场影响的统计诊断

1. 项目概述&#xff1a;当超新星遗迹的“指纹”遇上统计学的“放大镜”在宇宙这个宏大的实验室里&#xff0c;超新星遗迹&#xff08;Supernova Remnant&#xff0c; SNR&#xff09;扮演着能量“搅拌器”和物质“回收站”的双重角色。一颗大质量恒星走到生命尽头&#xff0c;…...

Decompyle++:Python字节码源码恢复实战指南

1. 这不是“反编译”&#xff0c;是字节码层面的源码重建——为什么Decompyle成了Python逆向事实标准你有没有遇到过这样的情况&#xff1a;接手一个只有.pyc文件的遗留项目&#xff0c;没有源码&#xff0c;连__pycache__目录都被人删干净了&#xff1b;或者审计第三方SDK时&a…...