Linux C语言:多级指针(void指针和const)

一、多级指针

  • 把一个指向指针变量的指针变量,称为多级指针变量
  • 对于指向处理数据的指针变量称为一级指针变量
  • 指向一级指针变量的指针变量称为二级指针变量

1、二级指针变量的说明形式

        <数据类型> ** <指针名> ; 

一张图理解二级指针

 2、多级指针的运算

  • 指针变量加1,是向地址大的方向移动一个目标数据
  • 多级指针运算也是以其目标变量为单位进行偏移 
  • int **p;p+1移动一个int *变量所占的内存空间
  • int ***p,p+1移动一个int **所占的内存空间

3、指针数组 

  • 指针数组也可以用另外一个指针来处理

有一个一维字符指针数组ps[5]

char *ps[5]= { "Beijing city",
......
"London city" } ; 

定义另一个指针变量pps,并且把指针数组的首地址赋予指针pps

char *ps[5]={......}; char ** pps = ps;

举个栗子:

#include<stdio.h>
#include<string.h>int main()
{char* a[] = { "work","at","alibaba" };char** pa = a;pa++;printf("%s\n", *pa);return 0;
}

 二、void指针及用法

1、万能指针 

  • 万能指针其实就是void *类型的指针,而void *指针一般被称为通用指针或叫泛指针。
  • 它是C语言关于纯粹地址的一种约定。当某个指针是void型指针时,所指向的对象不属于任何类型。
  • 因为void指针不属于任何类型,不可以对其进行算术运算,比如自增,编译器不知道其自增需要增加多少。 

2、void指针 

 一般形式为:
        void * <指针变量名称> ;
对于void指针,在没有强制类型转换之前,不能进行任何指针的算术运算

3、万能指针使用规则

  • 使用前必须被初始化
  • 解引用过程必须强制转换

三、const变量、const指针 

1、const变量

  • 常量化变量的值
  • 一般说明形式如下:

         const <数据类型> 变量名 = [<表达式>] ;

  • 常量化变量是为了使得变量的值不能修改
  • 变量有const修饰时,若想用指针间接访问变量,指针也要有const修饰。
  • const放在指针声明的什么位置呢?     就近原则:const修饰谁,谁不能变

2、const修饰指针

1)常量化指针目标表达式
  • 一般说明形式如下:

        const <数据类型> * <指针变量名称>[= <指针运算表达式>] ;

  • 常量化指针目标是限制通过指针改变其目标的数值 ,但<指针变量>存储的地址值可以修改 
2)常量化指针变量及其目标表达式
  •  一般说明形式如下:

        const <数据类型> * const <指针变量名> = <指针运算表达式> ;

  • 常量化指针变量及其目标表达式,使得既不可以修改<指针变量>的地址,也不可以通过*<指针变量名称>修改指针所指向变量的值

四、main函数的参数 

        int main(int argc, const char *argv[]) 

  • argc: 命令行参数的个数
  • argv:为保存命令行参数的字符串指针

        1)其中第0个参数是程序的全名,以后的参数为命令行后面跟的用户输入的参数
        2)argv参数是字符串指针数组,其各元素值为命令行中各字符串的首地址。
        3)指针数组的长度即为参数个数argc。

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

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

相关文章

vivado HW_SIO_RX

HW_SIO_RX 描述 在硬件设备上&#xff0c;每个GT包括一个独立的接收器hw_sio_rx 由一个PCS和一个PMA组成。高速串行数据从板上的迹线流入 GTX/GTH收发器RX的PMA&#xff0c;进入PCS&#xff0c;最后进入FPGA逻辑。 相关对象 HW_SIO_RX对象与HW_server、HW_target、HW_device、H…

构建稳定高效的消息传递中间件:消息队列系统的设计与实现

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 一、引言 二、设计目标 2.1、高可用性 1. 集群搭建 1.1 …

华为云DDoS攻击下的应对策略

当华为云上的服务遭遇大规模DDoS攻击导致网络流量异常&#xff0c;触发了华为云的自动防护机制&#xff0c;即所谓的“黑洞”状态时&#xff0c;服务将暂时无法访问&#xff0c;直至攻击停止或流量恢复正常。本文将探讨如何在这一情况下&#xff0c;通过引入第三方安全产品来快…

python发送http请求

python有个内置模块发送请求urllib的request的 openurl()方法&#xff0c;打开一个链接&#xff0c;就是发送一个请求&#xff0c;&#xff0c; 因为内置模块发请求不是那么好用&#xff0c;一般都会使用第三方的请求包&#xff0c;requests模块&#xff0c; 请求头 User-Ag…

比 Safari 阅读模式更强大的阅读助手

一、简介 1、一款专为浏览器设计的扩展程序&#xff0c;旨在提供更为简洁、高效的网页阅读体验。它能够对网页内容进行智能提取和排版&#xff0c;自动屏蔽广告和噪音&#xff0c;使读者能够专注于网页的核心内容。此外&#xff0c;Circle 阅读助手还具备多种个性化功能&#x…

高效数据架构:分表流程实践

前言 ​ 随着业务的不断扩展&#xff0c;数据量激增成为不可避免的现象。当数据量达到某一临界点时&#xff0c;单一的数据表可能无法承载如此庞大的数据量&#xff0c;此时就需要考虑进行分库分表的策略。尽管业界普遍认为数据量达到1000万时就应考虑分表&#xff0c;但实际上…

Windows搭建nacos集群

Nacos是阿里巴巴的产品&#xff0c;现在是SpringCloud中的一个组件。相比Eureka功能更加丰富&#xff0c;在国内受欢迎程度较高。 下载地址&#xff1a;Tags alibaba/nacos GitHub 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;8888 解压文件夹 目录说明&am…

python学习 -You-Get视频下载使用案例

You-Get 是一个命令行程序&#xff0c;提供便利的方式来下载网络上的媒体信息。 You-Get 是一个用于从网页下载媒体内容&#xff08;如视频、音频、图片&#xff09;的Python库。它支持多种网站&#xff0c;能够捕获并下载这些网站中直接或间接提供的媒体资源。You-Get 的设计…

如何从零训练多模态大模型(预训练方向)

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…

JVM (四)GC过程

一。概述 程序计数器、虚拟机栈、本地方法栈都是随线程生灭&#xff0c;栈帧随着方法的进入和退出做入栈和出栈操作&#xff0c;实现了自动的内存清理&#xff0c;因此&#xff0c;内存垃圾回收主要集中于Java堆和方法区中。 GC整体流程示意图&#xff1a; ① 年轻代对象的移动…

HALCON-从入门到入门-阈值分割定位算子综合运用

1.废话 之前我的一个师兄告诉我&#xff0c;针对图像上想要定位的内容&#xff0c;机器视觉中定位的方式有很多种&#xff0c;但是如果用阈值分割定位可以做的&#xff0c;就不要用模板匹配了。因为基于形状的模板匹配始终会存在匹配不到的风险&#xff0c;那如果打光效果可以…

记录清除挖矿病毒 solrd 过程

1、发现solrd病毒 端午节期间&#xff0c;kafka 服务器被黑客攻击了&#xff0c;植入了挖矿病毒 solrd&#xff0c;这个病毒很聪明&#xff0c;内存&#xff0c;CPU并没有异常升高&#xff0c;以致于上班第一天完全没有察觉。 上班第一天 正常登录服务器查看 flink ,消费kafka…

【qt】视口和窗口坐标

视口和窗口坐标 一.视口和窗口坐标的原理二.视口和窗口坐标的好处三.演示好处四.总结 一.视口和窗口坐标的原理 在绘图事件中进行绘图 void Widget::paintEvent(QPaintEvent *event) {QPainter painter(this);QRect rect(200,0,200,200);painter.drawRect(rect);//设置视口的…

HCIA12 NAT网络地址转换实验

NAT&#xff08;Network Address Translation&#xff09;是将 IP 报头中的 IP 地址转换为另一个 IP 地址的过程。主要俩好处&#xff1a; • 有效避免来自外网的攻击&#xff0c;可以很大程度上提高网络安全性。 • 控制内网主机访问外网&#xff0c;同时也可以控制外网…

SwanLab系列教程:用swanlab.Text记录文本

SwanLab是一个由国内团队开源的机器学习实验跟踪工具&#xff0c;相比于Tensorboard有更丰富的功能、更友好的UI界面&#xff0c;以及更重要的云端同步、多人协作功能。 安装&#xff1a;pip install swanlab 本教程主要介绍如何用swanlab.Text记录文本&#xff0c;这在做NLP…

maven在setting.xml配置文件中限制某个包不走某个镜像的配置案例

一、以阿里云镜像为例 1、验证示例&#xff0c;在 ideal 项目的父 pom.xml 文件中&#xff0c;配置了如下指定镜像 <repositories><repository><id>osgeo</id><url>https://repo.osgeo.org/repository/release/</url><snapshots>&l…

Allegro铺铜以及分割操作

Allegro铺铜以及分割操作 一、铺铜全局设置 点击Shape–>Global Dynamic Shape Parameters&#xff0c;在Shape fill中选择Smooth&#xff0c;其他不用管&#xff0c;这个是在铺铜的时候自动避让不同网络&#xff0c;在Void controls中一般填写如下参数&#xff0c;即避让…

数字孪生智慧水利:精准管理与智能决策的新时代

图扑数字孪生技术在智慧水利中的应用&#xff0c;通过虚拟模型与真实水利系统的无缝连接&#xff0c;实现对水资源和水利工程的全面监控和精细管理。实时数据采集与动态模拟提升了水利系统的预测和响应能力&#xff0c;从洪水预警到水质监测&#xff0c;数字孪生助力各项决策更…

Nginx学习笔记(十)如何配置HTTPS协议?(公网)

目录 一、简介二、SSL 证书类型介绍三、公网 SSL 证书3.1 证书管理工具3.2 下载安装 acme.sh3.3 申请并下载证书报错1&#xff1a;没有指定账号报错2&#xff1a;DNS无法解析的域名报错3&#xff1a;无效的响应 404 3.4 配置 Nginx3.5 证书过期刷新 四、补充4.1 同一域名的不同…

硬盘危机:磁盘损坏无法打开的应对策略

在数字化时代&#xff0c;磁盘作为数据存储和传输的核心设备&#xff0c;其稳定性和安全性至关重要。然而&#xff0c;在日常使用过程中&#xff0c;我们时常会面临磁盘损坏无法打开的困境。这不仅会影响我们的工作效率&#xff0c;还可能造成重要数据的丢失。本文将深入探讨磁…