指针高级(1)

1.指针的运算

2.指针运算有意义的操作和无意义的操作、

复制代码
#include <stdio.h>
int main()
{
        //前提条件:保证内存空间是连续的
        //数组
        int arr[] = { 1,2,3,4,5,6,7,8,9,10 };

        //获取0索引的内存地址
        int* p1 = &arr[0];

        //通过内存地址(指针P)获取数据
        printf("%d\n", *p1);
        printf("%d\n", *(p1 +1));

        //获取5索引的内存地址
        int* p2 = &arr[5];

        //p2 - p1间隔了多少时长
        printf("%d\n", p2 - p1);
        printf("%p\n", p1);
        printf("%p\n", p2);
        return 0;
}

3.野指针和悬空指针

复制代码
#include <stdio.h>
int* method();

int main()
{
        //野指针:指针指向的空间未分配
        int a = 10;
        int* p1 = &a;
        printf("%p\n", p1);
        printf("%d\n", *p1);

        //p2野指针
        int* p2 = p1 + 10;
        printf("%p\n", p2);
        printf("%d\n", *p2);

        //悬空指针:指针指向的空间已经分配,但是被释放了
        int* p3 = method();

        printf("拖点时间\n");
        printf("%p\n", p3);
        printf("%d\n", *p3);

        return 0;
}
int* method()
{
        int num = 10;
        int* p3 = &num;
        return p3;

}

4.void类型的指针

笔记

代码

5.二级指针和多级指针

笔记

程序

复制代码
#include<stdio.h>
int main()
{

        //定义变量
        int a = 10;
        int b = 20;

        //定义一级指针
        int* p = &a;

        //定义二级指针
        int** pp = &p;

        //利用二级指针修改一级指针里面记录的内存地址
        *pp =&b;

        //作用2:利用二级指针获取到变量中记录的数据

        //输出打印
        printf("%p\n", &a);
        printf(" % p\n", &b);
        printf("%p\n", p);
        printf("%d\n", **pp);//pp表示二级的
                            //➕一个*表示解一下,获取一级里面所记录的内存地址
                             //再➕一个*表示通过一级指针里面所记录的内存地址,再去获取到变量里面的数据
                return 0;
}
相关推荐
MATLAB代码顾问1 小时前
5大智能算法优化标准测试函数对比(Python实现)
开发语言·python
wuminyu2 小时前
专家视角看Java字节码加载与存储指令机制
java·linux·c语言·jvm·c++
万粉变现经纪人3 小时前
如何解决 pip install llama-cpp-python 报错 未安装 CMake/Ninja 或 CPU 不支持 AVX 问题
开发语言·python·开源·aigc·pip·ai写作·llama
清风明月一壶酒3 小时前
OpenClaw自动处理Word文档全流程
开发语言·c#·word
其实防守也摸鱼3 小时前
CTF密码学综合教学指南--第五章
开发语言·网络·笔记·python·安全·网络安全·密码学
Navigator_Z4 小时前
LeetCode //C - 1033. Moving Stones Until Consecutive
c语言·算法·leetcode
小郑加油4 小时前
python学习Day12:pandas安装与实际运用
开发语言·python·学习
AC赳赳老秦4 小时前
投标合规提效:用 OpenClaw 实现标书 / 合同自动审核、关键词校验、格式优化,降低废标风险
开发语言·前端·python·eclipse·emacs·deepseek·openclaw
KuaCpp4 小时前
C++面向对象(速过复习版)
开发语言·c++
wbs_scy4 小时前
Linux线程同步与互斥(三):线程同步深度解析之POSIX 信号量与环形队列生产者消费者模型,从原理到源码彻底吃透
java·开发语言