C语言——指针进阶(一)

目录

​编辑

一.字符指针

1.1 基本概念

 1.2 面试题

二.指针数组

三.数组指针

3.1 数组指针的定义

3.2 &数组名VS数组名

3.3 数组指针的使用

四.数组参数、指针参数

4.1 一维数组传参

​编辑

4.2 二维数组传参

4.3 一级指针传参

4.4 二级指针传参

​编辑

五.函数指针

六.结尾

一.字符指针

1.1 基本概念

我们可以打印试验一下字符串能否可以当成数组:

答案是可以,这样我们就学到的一种新的写法,可以直接把常量字符串存放到指针变量。

 不过这么做是有弊端的,就是不能修改,当我们尝试让指向首字符a的p进行解引用(修改首个字符变为‘e’)会发生错误。

所以我们可以在其前面添加const,这样就不会改变报错了。

const char* p = "abcdef"

p指向的是地址,地址不能用%c来打印出来,可以用%s,而*p因为是char*的指针类型,所以解引用后只能拿到一个字符,所以要用%c打印。

 1.2 面试题

我们可以发现s1与s2开辟了不同的空间指向了各自的地址。而const因为是常变量,所以当有多份的时候默认只有一份,这样s3和s4只能共同指向同一地址了,因为它是唯一的。

注意s3与s4存放的地址是一样,但是&s3和&s4可不一样,因为那是它们本身开辟用来存放地址的空间,空间地址是不一样的,只不过空间里面存放的地址(即内容)是一样的。

二.指针数组

 

 

 那我们接下来可以尝试通过下标来访问数组,再通过所访问数组的下标来访问其中的元素。

 

三.数组指针

3.1 数组指针的定义

 

3.2 &数组名VS数组名

结果一样,但前2个是首个元素地址,&arr就不一定了。取arr地址用到int*,取&arr[0]用到int*,因为本质上是找到里面的元素,那么&arr又要用什么样的指针变量接收呢?

3.3 数组指针的使用

 需要明确两点:1是确定好类型,2是标注大小。

 我们会发现这么打印很别扭,

 这样还不如指针数组方便

四.数组参数、指针参数

 

4.1 一维数组传参

 //arr[i]-->*(arr+i)(首个元素的地址+i而不是整个元素地址+i)

4.2 二维数组传参

二维数组传参要用到数组指针,指向整个数组的地址,方便访问下一个数组地址中的元素。

p[i]-->*(p+i)解引用后实际就是数组名,后面就变成数组名[j],进行访问元素。

 

4.3 一级指针传参

4.4 二级指针传参

五.函数指针

 

 我们可以发现无论是&函数名还是函数名,都是同样的地址。

函数指针的写法:

 切记*pf2要用括号括起来,不然就变成了一个返回类型是Int*的函数声明了。

 调用成功。

 分享一段有趣的代码:

 

 

 简化的版本:

六.结尾

指针进阶确实很绕,这个过程要不断地去刨析它,追根溯源。不仅仅得时常记忆,还得多去用指针,这样后续遇到关于指针类型的难题才不会被难住。

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

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

相关文章

【golang】派生数据类型---指针 标识符、关键字等

1、指针 对比C/C中的指针,go语言中的指针显得极为简洁,只是简单的获取某个空间的地址 或者 根据指针变量中的内容 获取对应存储空间的内容等操作。 具体示例如下: go中使用指针需要注意的点: 可以通过指针改变它所指向的内存空…

nginx-获取客户端IP地址

上有服务器与客户端中间是有nginx代理服务器的,上游服务器如何获取客户端真实ip地址? nginx代理服务器设置X-Forwarded-For的header参数,代理服务器通过remote_addr获取客户端ip地址,将ip地址写入nginx代理服务器的X-Forwarded-Fo…

可解释性的相关介绍

一、可解释性的元定义(Meta-definitions of Interpretability) The extent to which an individual can comprehend the cause of a model’s outcome. [1]The degree to which a human can consistently predict a model’s outcome. [2] 可解释性&am…

【坑】Vue中带有__ob__: Observer的数组无法遍历的问题

控制台可以打印出数据但是渲染不出结构 解决办法: setTimeout(() > {Bus.$emit(shareRes, this.result.filter(item > item.id id)) }, 500)替换 Bus.$emit(shareRes, this.result.filter(item > item.id id))总结 解决和总结 好像和__ob__.Observe无…

聚类分析 | MATLAB实现基于FCM模糊C均值聚类结果可视化

聚类分析 | MATLAB实现基于FCM模糊C均值聚类结果可视化 目录 聚类分析 | MATLAB实现基于FCM模糊C均值聚类结果可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 FCM模糊C均值聚类,聚类结果可视化,MATLAB程序。 FCM(Fuzzy C-Means&a…

AI智能问答在哪些领域可以应用呢

对于AI智能问答这个全新的领域很多人都是懵懵懂懂的,以为这就和一些科技大企业有关。但是其实不是的,这和我们每个人的日常生活都息息相关。这篇文章,looklook就来和大家讲讲AI智能问答可以有哪些应用的方向,有需要的朋友们就看下…

星际争霸之小霸王之小蜜蜂(七)--消失的子弹

目录 前言 一、删除子弹 二、限制子弹数量 三、继续重构代码 总结 前言 昨天我们已经让子弹飞了起来,但是会面临一个和之前小蜜蜂一样的问题,小蜜蜂的行动应该限制在窗口内,那么子弹也是有相同之处,也需要限制一个移动范围&…

学习笔记230827--vue项目中,子组件拿不到父组件异步获取数据的问题

🧋 问题描述 父组件的数据是请求后台所得,因为是异步数据,就会出现,父组件的值传递过去了,子组件加载不到,拿不到值的问题。 下面从同步数据传递和异步数据传递开始论述问题 🧋🧋1…

R语言响应面(RSM)、线性模型lm分析生产过程影响因素可视化

全文链接:https://tecdat.cn/?p33499 响应面(Response Surface Methodology,RSM)分析是一种常用的统计方法,用于研究和优化生产过程中的影响因素。通过建立数学模型来描述因素与响应之间的关系,RSM可以帮助…

【C++入门到精通】C++入门 —— 多态(抽象类和虚函数的魅力)

阅读导航 前言一、多态的概念1. 概念2. 多态的特点 二、多态的定义及实现1. 多态的构成条件2. 虚函数3. 虚函数的重写⭕虚函数重写的两个例外1.协变(基类与派生类虚函数返回值类型不同)2.析构函数的重写(基类与派生类析构函数的名字不同) 4. override 和 final(C11 …

什么是JVM ?

目录 一、JVM 简介 1.1 JVM 发展史 1.Sun Classic VM 2.Exact VM 3.HotSpot VM 4.JRockit 5.J9 JVM 6.Taobao JVM(国产研发) 1.2 JVM 和《Java虚拟机规范》 二、 JVM 运行流程 JVM 执行流程 三、JVM 运行时数据区 3.1 堆(线程共享…

SQLSTATE[IMSSP]: The active result for the query contains no fields.

我的是SQL server 报错场景,代码: $psendmx_sql"SET IDENTITY_INSERT PSENDMX ON;INSERT INTO psendmx (DJBH,MIBH,MXBH,SPDM,GG1DM,GG2DM,SL,SL_2,CKJ,ZK,DJ,DJ_1,JE,HH) VALUES {$mx_values};SET IDENTITY_INSERT PSENDMX OFF;"; $a$db_er…

wazuh环境配置和漏洞复现

1.wazuh配置 虚拟机 (OVA) - 替代安装 (wazuh.com)在官方网页安装ova文件 打开VMware选择打开虚拟机,把下载好的ova文件放入在设置网络改为NAT模式 账号:wazuh-user 密码:wazuh ip a 查看ip 启动小皮 远程连接 账号admin …

kafka和消息队列

https://downloads.apache.org/kafka/3.5.1/kafka_2.13-3.5.1.tgz d kafka依赖与zookeeper kakka配置文件 broker.id1 #每个 broker 在集群中的唯一标识,正整数。每个节点不一样 listenersPLAINTEXT://192.168.74.70:9092 ##监听地址 num.network.threads3 #…

四信5G智慧交通方案

5G是第五代移动通信技术的简称,是具有高速率低时延和大连接特点的新一代宽带移动通信技术,是实现智慧交通中的“车、路、人、环境”等交通要素互联互通的网络基础设施。相比以往的移动通信网络,5G网络以一种灵活部署的架构提供10Gbps以上的带…

有什么react进阶的项目推荐的?

前言 整理了一些react相关的项目,可以选择自己需要的练习,希望对你有帮助~ 1.ant-design Star:87.1k 阿里开源的react项目,作为一个UI库,省去重复造轮子的时间 仓库地址:https://github.com/ant-design/…

家宽用户家庭网的主要质量问题是什么?原因有哪些

1 引言 截至2020年底,我国家庭宽带(以下简称“家宽”)普及率已达到96%。经过一年多的发展,当前,家庭宽带的市场空间已经饱和。运营商在家宽市场的竞争也随之从新增用户数的竞争转移到家宽品质的竞争。 早期运营商的家…

C++构造函数初始化列表

构造函数的一项重要功能是对成员变量进行初始化&#xff0c;为了达到这个目的&#xff0c;可以在构造函数的函数体中对成员变量一一赋值&#xff0c;还可以采用初始化列表。 C构造函数的初始化列表使得代码更加简洁&#xff0c;请看下面的例子&#xff1a; #include <iostre…

检测链表中是否存在环

题目、解析和代码 题目&#xff1a;给定一个单链表&#xff0c;判断其中是否有环的存在 解析&#xff1a;这里使用两个遍历速度不一样的结点进行判断&#xff0c;一个慢结点从首结点开始遍历&#xff0c;这个结点每次只遍历一个结点&#xff1b;一个快结点从第二个结点进行遍历…

交通科技与管理杂志社交通科技与管理编辑部2023年第9期目录

专家论坛 黑龙江省经济高质量发展与生态环境保护耦合协调发展研究 刘降斌;祃玉帅; 1-5142 我国省际数字经济高质量发展水平综合评价研究 耿娟;毕晨曦; 6-8 振兴龙江《交通科技与管理》投稿邮箱&#xff1a;cn7kantougao163.com(注明投稿“《交通科技与管理》”) 数…