指针

1.1 定义

// 定义指针
int a = 10;
// 指针定义的语法->数据类型 *指针变量名
int *p;
//让指针记录变量a的地址
p = &a;

或者直接 int *p = &a;

1.2 使用

// 指针前加 * 代表解引用,找到指针指向的内存中的数据,进行读取,修改数据
*p = 1000;

1.3 指针所占内存空间

不管是什么数据类型,在 32 位操作系统下占用4个字节空间;64位占8个字节
查看指针所占内存空间:

sizeof(p); // 或者 sizeof(int *);

1.4 空指针和野指针

空指针:指针变量指向内存中编号为0的空间。用途是初始化指针变量。注意:空指针指向的内存是不可以访问的

int *p = NULL;

友情提示:0~255之间的内存编号是系统占用的,因此不可以访问

野指针

// 指针变量指向内存地址编号为 0x1100的空间
int *p = (int *)0x1100;
// 访问野指针报错
cout << *p << endl;

2.1 ★const修饰指针

const修饰指针有三种情况:

int a = 10;
const int *p = &a;
int * const p = &a;
const int * const p = &a;

2.2 指针和数组

利用指针访问数组中元素。

int arr[10] = {1,2,3};
int *p = arr;
for(int i = 0; i < 10; i++){
  // &#x4EE5;&#x4E0B;&#x4E24;&#x884C;&#x4EE3;&#x7801;&#x6216;&#x8005;&#x7B80;&#x5199;&#x4E3A; *p++
  cout << *p << endl;
  p++;
}

2.3 指针和函数

举个栗子:swap函数:交换两个数

int a = 10;
int b = 20;
swap(&a, &b);
void swap(int *p1, int *p2){
  int temp = *p1;
  *p1 = *p2;
  *p2 = temp;
}

2.4 结构体指针

struct student{
  string name;
  int age;
  int score;
};
// 1.&#x521B;&#x5EFA;&#x5B66;&#x751F;&#x7ED3;&#x6784;&#x4F53;&#x53D8;&#x91CF;
struct student s = {"&#x5F20;&#x4E09;"&#xFF0C; 18&#xFF0C; 100};
// 2.&#x901A;&#x8FC7;&#x6307;&#x9488;&#x6307;&#x5411;&#x7ED3;&#x6784;&#x4F53;&#x53D8;&#x91CF;
struct student *p = &s;
// 3.&#x901A;&#x8FC7;&#x6307;&#x9488;&#x8BBF;&#x95EE;&#x7ED3;&#x6784;&#x4F53;&#x53D8;&#x91CF;&#x4E2D;&#x7684;&#x6570;&#x636E;
cout << p -> name << p -> age << p -> score << endl;

Original: https://www.cnblogs.com/skipspur163/p/15861360.html
Author: SKIPSPUR_SUPER
Title: 指针

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/583792/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • gk的爬山之旅(单调栈 DP)

    题目: ​ 有n座山峰,每个山峰都有自己的高度和值,现在出题人要在群山中穿梭。穿梭有两个条件:1 他们只会去高度大于当前所在山峰的高度的山峰;2 他们只能到达左右两边第一个比自己高…

    数据结构和算法 2023年6月12日
    072
  • Index of C++ Questions

    N Namespace unnamed namespace Unnamed namespace in C++ primer (P. 791) posted @2022-03-29 …

    数据结构和算法 2023年6月7日
    084
  • 分布式应用运行时Dapr

    Dapr为微软开源的一个用于 构建分布式应用的框架,Dapr为 分布式应用运行时(Distributed Application Runtime)的英文单词缩写;Dapr提供了分布…

    数据结构和算法 2023年6月7日
    085
  • poj 2763 Housewife Wind

    题意: 给出一棵树,两种操作: 1.求出a到b的距离; 2.修改某一条边的权值。 思路: 可以用树链刨分(我不会 首先,求a到b的距离,因为有很多组询问,所以必须得用lca解决 a…

    数据结构和算法 2023年6月12日
    079
  • SpringBoot 中使用Redis Stream 实现消息监听

    SpringBoot 中使用Redis Stream 实现消息监听 视频介绍 SpringBoot 中使用Redis Stream 实现消息监听 Demo环境 JDK8 Maven…

    数据结构和算法 2023年6月8日
    0128
  • JAVA图形界面(1)

    1 package t1; 2 import javax.swing.*; 3 import java.awt.*; 4 import javax.swing.border.Tit…

    数据结构和算法 2023年6月7日
    075
  • leetcode算法-两数相除 前端

    题目链接: leetcode-29-两数相除 此题需要在不使用乘法,除法,取模的情况下求的两数相除的结果, 开始看到这道题,以为使用位运算做的,结果发现位运算里面太多的循环,导致并…

    数据结构和算法 2023年6月12日
    089
  • 动态格子算法

    动态格子算法常用于弹幕游戏的碰撞检测优化,可减少遍历开销。 概述 动态格子算法常用于弹幕游戏的碰撞检测优化,可减少遍历开销。这是我之前做的小游戏就用到了此算法,当后期满屏子弹时,优…

    数据结构和算法 2023年6月8日
    089
  • (3)栈的操作

    一、栈(Stack)的介绍 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元…

    数据结构和算法 2023年6月16日
    068
  • G. Cut Substrings(线性DP) CF 1729G

    题目: ​ 给出两个字符串(s)和(t),在(s)中删去(t),当字符串(s)不能再删去(t)的时候,请问最少的删除次数和方案数是多少。字符串长度为500。 思路: ​ 字符串长度…

    数据结构和算法 2023年6月12日
    071
  • 双向队列

    Deque简介 Deque是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。允许快速地访地随机访问,但是和vector这种将所有对象保存在一块连续的内存块不同,Deq…

    数据结构和算法 2023年6月13日
    074
  • 深入C++04:模板编程

    📕模板编程 函数模板 模板意义:对类型也进行参数化; 函数模板:是不编译的,因为类型不知道 模板的实例化:函数调用点进行实例化,生成模板函数 模板函数:这才是要被编译器所编译的 函…

    数据结构和算法 2023年6月12日
    088
  • 2022杭电多校第四场C-Magic(差分约束)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=7176 代码: 1 #include 2 #include 3 #include 4…

    数据结构和算法 2023年6月8日
    095
  • 组合数学 1

    题都是好题,会的没几道。 using mint = modint1000000007; /* n = r if i != x: dp[i][l][r] = dp[i-1][l-1]…

    数据结构和算法 2023年6月12日
    087
  • 介绍下Java内存区域(运行时数据区)

    介绍下Java内存区域(运行时数据区) Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。JDK 1.8 和之前的版本略有不同。 下图是 J…

    数据结构和算法 2023年6月8日
    0121
  • 如何计算 LIS

    LIS,即最长上升子序列 . 基于 DP 的做法 令 (dp_i) 表示以 (i) 结尾的 LIS 长度,则有 可以直接暴力转移,于是答案就是 (\displaystyle\max…

    数据结构和算法 2023年6月7日
    082
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球