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.mfbz.cn/a/701836.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【十大排序算法】桶排序

在时间的琴弦上&#xff0c;桶排序如同一曲清澈的溪流&#xff0c;将数字的芬芳温柔地分拣&#xff0c;沉静地落入各自的花瓣般的容器中。 文章目录 一、桶排序二、发展历史三、处理流程四、算法实现五、算法特性六、小结推荐阅读 一、桶排序 桶排序&#xff08;Bucket sort&…

Java学习-MyBatis学习(二)

代码下载 MyBatis核心配置文件 jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://192.168.29.201:3306/mybatis jdbc.usernameroot jdbc.password123456<configuration><!-- environments&#xff1a;配置多个连接数据库环境default&#xff1a;默认使用的…

什么是熔断降级?说说几种解决方案

引言&#xff1a;本文将深入探讨熔断降级的概念及其在微服务架构中的应用。我们将详细介绍熔断降级的定义&#xff0c;解释其在分布式系统中的重要性&#xff0c;并探讨几种常见的解决方案。通过阅读本文&#xff0c;读者将能够全面了解熔断降级机制&#xff0c;并掌握如何在实…

感受风的速度~2024COSP上海国际户外展为您的骑行之旅锦上添花

夏天已经到来 你是在家里宅着 还是出去晒太阳呢 若是还没抉择好 不如来一场畅快淋漓的追风之旅 抬头可见蓝天白云 低头便是美丽风景 无论是在凉亭闲聊的人们 还是竞相绽放的花朵 每一个场景都令人难忘 骑累了 就到附近的座椅上小憩一番 不用刻意追求速度 尽享“慢…

鸿蒙轻内核A核源码分析系列四(3) 虚拟内存

4.2 函数LOS_RegionAlloc 函数LOS_RegionAlloc用于从地址空间中申请空闲的虚拟地址区间。参数较多&#xff0c;LosVmSpace *vmSpace指定虚拟地址空间&#xff0c;VADDR_T vaddr指定虚拟地址&#xff0c;当为空时&#xff0c;从映射区申请虚拟地址&#xff1b;当不为空时&#…

DevExpress 控件和库

UI控件和组件 DevExpress WinForms包括以下Windows窗体库和控件&#xff1a; Grids and Editors Data Grid Tree List Vertical Grid Property Grid Gantt Control Data Editors and Simple Controls Office-inspired Ribbon, Bars and Menu Rich Text Editor Scheduler S…

本地生活服务电商平台小程序源码系统 含完整的安装代码包+搭建教程

系统概述 本地生活服务电商平台小程序源码系统&#xff0c;是一款集成了商品展示、在线交易、服务预约、优惠券发放、会员管理、订单处理、即时通讯等多种功能于一体的综合性解决方案。它旨在为本地商家提供一个高效、便捷的线上经营平台&#xff0c;同时为消费者带来流畅的使…

LLM自动化对齐技术

近年来&#xff0c;大语言模型&#xff08;LLMs&#xff09;的快速发展&#xff0c;极大地重塑了人工智能的格局。一致性是塑造与人类意图和价值观相对应的LLMs行为的核心&#xff0c;例如&#xff0c;教导LLMs遵循响应过程中“有帮助&#xff08;Helpful&#xff09;、无害(Ha…

autoware lidar-centerpoint 点云在rviz上叠加显示问题

在使用自采数据包放入autoware中的lidar_centerpoint上进行检测时发现&#xff0c;在rviz可视化上出现问题&#xff1a;多帧点云在一个位置上不断叠加&#xff0c;不能正常随时间显示。 如下图所示&#xff1a; 解决方法&#xff1a; 出现上述问题是因为autoware默认使用的是…

Golang——gRPC认证

一. OpenSSL 1.1 介绍 OpenSSL是一个开放源代码的软件库包&#xff0c;用于支持网络通讯过程中的加密。这个库提供的功能包含了SSL和TLS协议的实现&#xff0c;并可用于生成密钥、证书、进行密码运算等。 其组成主要包括一下三个组件&#xff1a; openssl&#xff1a;多用途的命…

AMEYA360| 罗姆开发出新型二合一 SiC封装模块“TRCDRIVE pack™”

全球知名半导体制造商ROHM(总部位于日本京都市)面向300kW以下的xEV(电动汽车)用牵引逆变器&#xff0c;开发出二合一SiC封装型模块“TRCDRIVE pack™”&#xff0c;共4款产品(750V 2个型号&#xff1a;BSTxxxD08P4A1x4&#xff0c;1,200V 2个型号&#xff1a;BSTxxxD12P4A1x1)。…

深入理解Python多进程

目录 一、引言 二、Python多进程基础 进程与线程的区别 Python多进程模块 三、Python多进程实现原理 进程创建 进程间通信 进程同步 四、Python多进程使用方法 创建进程 进程间通信 五、实战案例 六、总结 一、引言 在Python编程中&#xff0c;多进程是一种重…

PartnerShare VS Tolt:出海SaaS选择哪种推广分销系统合适?

SaaS产品的成功在很大程度上取决于其推广策略的有效性。PartnerShare联盟系统和Tolt都是市场上比较知名的推广分销解决方案&#xff0c;能够帮助企业扩大用户基础并提高品牌知名度。 但是两款工具在某些特定任务上肯定有自己的独特优势&#xff0c;“找到你的锤子&#xff0c;…

SpringBoot-集成TOTP

TOTP验证码提供了一种高效且安全的身份验证方法。它不仅减少了依赖短信或其他通信方式带来的成本和延时&#xff0c;还通过不断变换的密码增加了破解的难度。未来&#xff0c;随着技术的进步和对安全性要求的提高&#xff0c;TOTP及其衍生技术将继续发展并被更广泛地应用。TOTP…

QT安装及项目创建

一、QT安装 1、安装qt_creater 方法一&#xff1a; 镜像文件&#xff1a;在2024-6-12&#xff1a;版本已经更新到了6.7 下载地址&#xff1a;https://download.qt.io/archive/qt/ 方法二&#xff1a; 百度网盘&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1D0EmH…

SpringSecurity入门(一)

1、引入依赖 spring-boot版本2.7.3&#xff0c;如未特殊说明版本默认使用此版本 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><g…

【Linux】基础IO [万字之作]

目录 一.重谈文件 二.重谈C文件操作 1.操作 1.文件的打开和关闭 2.文件的读写操作 ​编辑 1.fgetc函数 2.fputc函数 3.fputs函数 4.fgets函数 5.fprintf函数 6.fscanf函数 7.fread函数 8.fwrite函数 三.重谈当前路径 四.系统文件操作接口 1.Open函数 2.write函数 3…

hot100 -- 栈

目录 &#x1f6a9;有效的括号 &#x1f33c;最小栈 AC 栈 AC 链表 &#x1f33c;字符串解码 &#x1f43b;每日温度 &#x1f352;柱状图中的最大矩形 解释 AC 单调栈 &#x1f6a9;有效的括号 20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 1&#xf…

[初阶数据结构] 包装类 | 泛型

目录 一. 包装类 1.1 什么是包装类? 1.2 包装类的意义 1.3 基本数据类型与包装类 1.4 装箱 1.5 拆箱 1.6 小总结 二. 泛型 2.1 什么是泛型? 2.2 泛型的意义 2.3 泛型的语法 2.4 泛型的编译 2.4.1 下载插件 2.4.2 分析 2.5 上界 2.6 泛型方法 2.7 小总结 三. 总结 一.…

conda虚拟环境,安装pytorch cuda cudnn版本一致,最简单方式

1、pytorch版本安装&#xff08;卸载也会有问题&#xff09; &#xff08;1&#xff09;版本如何选择参考和卸载 https://zhuanlan.zhihu.com/p/401931724 &#xff08;2&#xff09;对应版本如何安装命令 https://pytorch.org/get-started/previous-versions/ 最简答安装参考…