C语言指针进阶一:(字符指针,数组指针,指针数组,函数指针)

news2024/11/15 10:52:25

字符指针

在指针类型中我们知道字符指针类型,一般就是用于 char 的:
 

int main()
{
	char ch = 'w';
	char* p = &ch;
	*p = 'a';
	return 0;

}

还有一种使用方法:

int main()
{
	const char* pstr = "hello bit";
	printf("%s\n", pstr);
	return 0;
}

上述代码中放入指针 pstr 中的不是整个字符串,而是字符串首字符的地址放到了指针中,就是说字符 h 的地址放到了指针中。(如果字符串是表达式的话,他的值是首字符的地址)。

 上述代码会输出什么?

 因为用相同的常量字符串初始化不同的数组时会开辟出不同的空间,自然就不一样了,而 str3 和 str4指向的是同一个常量字符串,是同一个内存空间,所以是相同的。

指针数组

之前的文章有讲过

数组指针

数组指针是数组还是指针,答案是指针,是指向一个数组的指针。

我们看看数组指针是什么样子的:
 

int* p1[10];//指针数组

int (*P)[10];//数组指针

*先与p结合说明是指针,int [10]说明指向的是一个整形数组。

&数组名

之前知道数组名一般是首元素的地址,只有sizeof和&不是,当&数组名时,取出的是整个数组的地址,他的类型就是数组指针,+1跳过整个数组的大小。

数组指针的使用

数组指针一般有什么用,一般是二维数组传参的时候

 二维数组传参可以写这两种方式,但是因为数组名是首元素的地址,二维数组的首元素地址是第一行的地址,也就是一个一维数组的地址,所以要用数组指针来接收。

特殊代码

int (*parr[10])[5];

请问这个代码的含义,来分析:

 先将移去的看做是整体,可以看出剩下的是一个数组指针的类型,再看parr[10]有元素,说明这是一个数组,存放数组指针的数组。

特别提示二维数组传参的时候,函数参数中 [2][5] 第一个[]可以省略,第二个不可以。

函数指针

 会输出什么

这两个地址都是函数的地址,函数地址该怎么保存?

void (*pfun1)();
//*先与pfun1结合说明是指针,指向的函数返回类型是void,()里没有参数

int (*pfun2)(int,int);
//指向的函数返回类型是int,参数类型是int,int

这就是函数指针类型。(同时我们知道了函数名就是函数的地址,函数指针可以直接用于函数调用

特殊代码

(*(void (*) () )0) ();



void (*signal(int, void(*)(int) ) )(int);

先分析第一个代码:

被拿下的部分是函数指针类型,说明是一个类型转换,解引用类型转换之后的0,说明是调用0地址处的函数,没有参数。

第二个代码:

当移去部分后,剩下的是一个函数指针类型,再看移去的部分,像是一个函数声明,参数类型是 int和函数指针类型,说明这就是一个函数声明,参数有两个,返回类型是函数指针类型。

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

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

相关文章

亚马逊、temu自养号采购大额下单需要解决哪些技术要点?

自养号采购下单在跨境电商平台中是一个复杂且需要精细操作的过程,主要涉及多个技术要点以确保账号安全、提高下单成功率,并避免被平台风控系统识别。以下是需要解决的关键技术要点: 1. 纯净的测评环境 服务器与IP:使用高纯净度的…

java实现发邮件功能的方式?如何使用java?

java实现发邮件的配置步骤?如何用java实现发信功能? Java实现发邮件功能是一个非常常见且重要的需求。无论是用于用户注册确认、密码重置还是系统通知,Java实现发邮件功能都能提供强大的支持。AokSend将详细介绍几种常用的Java实现发邮件功能…

模板方法详解

1.基本介绍 模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern), 在一个抽象类公开定义了执行 它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。简单说&…

【系统分析师】-计算题-净现值与投资回报率

1、某企业准备开发一个信息管理系统,其生存周期为5年。该系统的预计开发成本、预计的年运行/维护成本,以及预计的收益如下表所示(其中带括号的数据表示负值)。 问题1 (1)目前许多管理人员将投资的净现值作为…

Ribbon负载均衡底层原理

springcloude服务实例与服务实例之间发送请求,首先根据服务名注册到nacos,然后发送请求,nacos可以根据服务名找到对应的服务实例。 SpringCloudRibbon的底层采用了一个拦截器,拦截了openfeign发出的请求,对地址做了修…

Qt 实现不规则的部件或者窗口

1、实现不规则的部件 1.1 工程目录 1.2 界面实现 1.3 widget.cpp #include "widget.h" #include <QPixmap> #include <QBitmap> #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->set…

AI人工智能_Prompt提示词工程如何生成API接口文档

AI人工智能_Prompt提示词工程如何生成API接口文档&#xff1f;在与AI大模型的交互中&#xff0c;每当我们输入一段文字&#xff0c;无论是问题、命令还是陈述&#xff0c;这段文字就是一个Prompt。 Prompt提示词工程&#xff08;Prompt Engineering&#xff09;是一种技术或方…

【C++】—— string 类的了解与使用

【CPP】—— string类的了解与使用 1、 为什么学习string 类1.1、 C语言中的字符串1.2、 面试题中更多以 string 类出现 2、 标准库中的 string 类3、 string 的默认成员函数3.1、 string 的构造与拷贝构造3.2、 string 的赋值重载3.3、 string 的析构函数 4、 operator[ ]4.1、…

ADAS---基于检测框的单目测距方法

1.1.模型求解法方法解读&#xff1a; Yolo模型可以输出被检测物体的置信度、类别及检测框的中心点坐标(xc,yc)及宽高(w,h)等信息&#xff0c;选取车辆检测框底部的中点作为距离测量的特征点&#xff0c;其计算公式如下&#xff1a; 车辆测距示意图如下&#xff1a; 图中&#…

Zabbix之ubuntu环境下最新版zabbix-server7.0安装

一、zabbix7.0简介 Zabbix 7.0 是 Zabbix 系列中的一个主要版本&#xff0c;提供了增强的监控功能、改进的性能和扩展的可用性。Zabbix 是一个开源的企业级监控解决方案&#xff0c;用于监控服务器、虚拟机、网络设备、应用程序、服务等各类 IT 基础设施。Zabbix 7.0 继承了之前…

基于ZigBee的老人家庭监护报警设计

1 整体方案设计 本设计老人家庭监护报警系统的整体架构如图2.1所示&#xff0c;包括终端节点、协调器、上位机三个部分&#xff0c;其各个部分功能如下&#xff1a; 终端节点&#xff1a;以CC2530单片机为控制核心&#xff0c;结合心率传感器、DS18B20温度传感器、压力传感器…

大语言模型Token

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhlToken概述 Token的定义与分类 基本定义 Token是自然语言处理(NLP)和机器学习中的基本单元,它代表文本中的一个有意义的片段,如单词、短语或子词。在大型语言模型(LLM)中,Token是模型理解…

docker 介绍以及常用命令

文章目录 Docker 概述docker 概念安装 Docker核心概念Docker 镜像Docker 容器Docker 仓库 docker 与虚拟机比较 Docker 命令docker 进程相关命令镜像相关命令查看本地镜像搜索镜像拉取/推送镜像删除镜像 容器相关命令创建容器查看容器启动/终止/删除容器新建并启动容器进入容器…

day2 python学习积累

1.Python 关键字 - finally try:# 可能引发异常的代码 except 异常类型:# 异常处理代码 finally:# 无论是否发生异常都将执行的代码 try:file open("example.txt", "r")# 执行一些操作 except FileNotFoundError:print("文件不存在") finally…

你还在为去除图片背景烦恼吗?试试这两款免费神器吧!

今天想和大家聊聊在生活工作中特别实用的小工具&#xff0c;与“抠图”强相关的两款AI工具&#xff01; 说到这2个工具&#xff0c;真是忍不住要为大家强烈推荐一番&#xff01; 他们俩就是&#xff1a;PixianAI、Removerized 先说说背景去除这件事儿 无论你是设计师、摄影…

5年数据观巨变,这家公司如何在AI和大模型数据赛道遥遥领先?

过去5年&#xff0c;整个社会对于数据的观念和认知&#xff0c;发生了天翻地覆的改变。这要归功于OpenAI与预训练大语言模型&#xff08;以下简称大模型&#xff09;的问世以及横扫全球的ChatGPT。从2020年1月OpenAI发表《自然语言模型的“摩尔定律”&#xff08;Scaling Law f…

wmv怎么转换成视频mp4?简单的几种视频格式转换方法

wmv怎么转换成视频mp4&#xff1f;在数字媒体日益普及的今天&#xff0c;我们经常会遇到需要转换视频格式的情况。wmv格式&#xff0c;由微软开发&#xff0c;广泛用于Windows平台上播放视频。尽管wmv格式在Windows系统中表现优异&#xff0c;但其兼容性在其他操作系统或设备上…

关于VUE3开发频繁引入ref,reactive,computed等基础函数。

利用unplugin-auto-import插件可以避免频繁引入ref&#xff0c;reactive&#xff0c;computed等基础函数。 1.安装unplugin-auto-import依赖 npm i -D unplugin-auto-import 2.在vite.config.ts中注入依赖 效果

项目实战系列三: 家居购项目 第二部分

家居购项目 &#x1f407;servlet合并&#x1f34e;方案一: 隐藏域&#x1f34e;方案二: 反射模板设计模式动态代理 &#x1f333;显示家居&#x1f333;添加家居&#x1f349;解决重复添加&#x1f349;后端数据校验说明&#x1f349;BeanUtils自动封装Bean &#x1f333;删除…

什么是网络安全,如果做好安全

随着互联网技术的迅猛发展&#xff0c;我们的生活和工作日益依赖于网络。然而&#xff0c;这也使得网络安全问题愈发重要。网络安全不仅关乎个人隐私的保护&#xff0c;还直接影响到企业的运营安全乃至国家的信息安全。今天我们就来了解下关于网络安全&#xff0c;当前存在哪些…