【C语言】指针基础知识(二)

一,指针变量类型的意义

1,指针的类型决定了,对指针解引⽤的时候有多⼤的权限(⼀次能操作⼏个字节)。

例如:char* 的指针解引⽤访问⼀个字节,int* 的指针解引⽤访问四个字节,short*的指针解引⽤访问两个字节。

二,指针+-整数

指针的类型决定了指针向前或者向后⾛⼀步有多大距离。

三,void* 指针

在指针类型中有⼀种特殊的类型是 void* 类型的,可以理解为无具体类型的指针(或者叫泛型指 针),这种类型的指针可以用来接受任意类型地址。

局限性:1,void* 类型的指针不能直接进行指针的+-整数。

              2,解引用的运算。

四,const修饰指针

例:

#include <stdio.h>
int main()
{int m = 0;m = 20;//m是可以修改的const int n = 0;n = 20;//n是不能被修改的return 0;
}

但是如果我们绕过n,使⽤n的地址,去修改n就能做到了。

3732d5ff393542558f9ce4b7880d19c8.png

注:

const修饰指针变量时:
• const如果放在*的左边,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改变。但是指针变量本⾝的内容可变。
• const如果放在*的右边,修饰的是指针变量本⾝,保证了指针变量的内容不能修改,但是指针指向的内容,可以通过指针改变。

89d6f5b5aaa94cc6a0ccaa82556cdc43.png

五,指针运算

指针的基本运算有三种,分别是:
1,指针+- 整数
2,指针-指针
3,指针的关系运算

1,指针+- 整数

#include <stdio.h>
//指针+- 整数
int main()
{int arr[10] = {1,2,3,4,5,6,7,8,9,10};int *p = &arr[0];int i = 0;int sz = sizeof(arr)/sizeof(arr[0]);for(i=0; i<sz; i++){printf("%d ", *(p+i));//p+i 这⾥就是指针+整数}return 0;
}

运行结果:

66ba7f9a8c2148f094be88ffb110ffd4.png

cceb8c94c392432785908e27911423ff.png

 

2,指针+-指针

//指针-指针
#include <stdio.h>
int my_strlen(char* s)
{char* p = s;while (*p != '\0')p++;return p - s;
}
int main()
{printf("%d\n", my_strlen("abc"));return 0;
}

运行结果:3

指针减指针得到的是指针之间的元素个数

3,指针之间的关系运算

#include <stdio.h>
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int* p = &arr[0];int i = 0;int sz = sizeof(arr) / sizeof(arr[0]);while (p < arr + sz) //指针的⼤⼩⽐较{printf("%d ", *p);p++;}return 0;
}

运行结果:

09581f5638464ae3aa190b15a07ee467.png

指针之间的关系运算本质是比较大小

ae24edbca9e54075972344f20bcf4f20.png

 

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

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

相关文章

[SAP MM] 名词专业术语解释

采购凭证 采购凭证通常是一种证明文件&#xff0c;用于记录和跟踪特定时间点的采购活动 采购凭证是指企业在采购物品或服务时所开立的一种凭证&#xff0c;用于记录采购的信息和流程 采购凭证通常包括采购申请、采购订单、采购合同等&#xff0c;其中采购订单是最常用的采购…

C语言UNIX域套接字CS模型

实验目标: 1 实现基于流的unix域套接字通信cs模型 2 实现基于数据报的unix域套接字通信cs模型 3 可以观察到CS两端的完整启动退出流程,为了实现这一目标仅进行一次通信 实验心得: 1 使用unlink避免地址冲突 清理资源 2 传统udp在首次sendto时系统临时分配端口,在套接字关…

周末分享一篇关于html和http的文章吧

前面咱们说了https://blog.csdn.net/luohaitao/article/details/136974344&#xff08;说道说道JSP和HTTP吧-CSDN博客&#xff09;&#xff0c;把http的方法和jsp中httpservle对象的方法对上号了&#xff0c;其实从开发的角度看&#xff0c;jsp就是html中混入了java的服务端代码…

Rust并发编程thread多线程和channel消息传递

安全高效的处理并发是 Rust 诞生的目的之一&#xff0c;主要解决的是服务器高负载承受能力。 并发&#xff08;concurrent&#xff09;的概念是指程序不同的部分独立执行&#xff0c;这与并行&#xff08;parallel&#xff09;的概念容易混淆&#xff0c;并行强调的是"同…

DNS、DNS劫持与HTTPDNS:原理、应用与安全分析

文章目录 一、DNS原理和应用1.1 原理1.2 应用 二、DNS劫持的场景和原因分析2.1 场景2.2 原因分析 三、HTTPDNS的应用场景3.1 应用场景3.2 HTTPDNS服务商 四、总结 一、DNS原理和应用 DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09;是互联网的一项核心服务…

人工智能之Tensorflow批标准化

批标准化&#xff08;Batch Normalization,BN&#xff09;是为了克服神经网络层数加深导致难以训练而诞生的。 随着神经网络的深度加深&#xff0c;训练会越来越困难&#xff0c;收敛速度会很慢&#xff0c;常常会导致梯度消失问题。梯度消失问题是在神经网络中&#xff0c;当前…

chatgpt和 github copilot chat哪个更强

chatgpt大家应该都不陌生 ChatGPT 是由 OpenAI 开发的一种基于 GPT&#xff08;生成式预训练模型&#xff09;的聊天机器人。它可以生成语言上下文相关的响应&#xff0c;从而进行自然语言对话。ChatGPT 利用大规模的语言数据进行预训练&#xff0c;并通过微调或在线学习来适应…

【云开发笔记No.12】再说测试

一、自动化测试 自动化测试是软件开发过程中的重要环节&#xff0c;旨在通过自动化工具来执行测试用例&#xff0c;从而验证软件的功能、性能、安全性等方面是否符合预期。自动化测试能够显著提高测试效率&#xff0c;减少人为错误&#xff0c;并持续监控软件的质量。 关键技…

微服务(基础篇-002-Ribbon)

目录 Ribbon负载均衡&#xff08;1&#xff09; 负载均衡的原理&#xff08;1.1&#xff09; 负载均衡策略&#xff08;1.2&#xff09; Ribbon-IRule(1.2.1) 修改负载均衡的方法&#xff08;1.2.2&#xff09; 懒加载&#xff08;1.3&#xff09; 饥饿加载&#xff08;1…

ES聚合查询

ES聚合查询 {"query": {"bool": {"must": [{"terms": {"orderId": ["58880570952990","58882596943998","58880654706404"]}},{"term": {"billType": "110"}…

【Python操作基础】——for语句用法

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

力扣74---搜索二维矩阵

目录 题目描述&#xff1a; 思路&#xff1a; 代码&#xff1a; 题目描述&#xff1a; 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 targ…

mac 解决随机出现的蓝色框

macbookair为什么打字的时候按空格键会出现蓝色框? - 知乎

求任意数任何可能的乘方的个位数

形如该题&#xff1a;用到了循环节 1 2 4 8 6 3 9 7 1 4 6 5 6 7 9 3 1 8 4 2 6 9 1 如图为一到十的数字乘方的个位数的循环&#xff0c;可以看出有的数1个数一循环&#xff0c;有的是2个数一循环&#xff0c;有的是4个一循环。 例题&#xff1a; 则4肯定是所有所有个位数n次方…

前端学习笔记 | JS进阶

一、作用域 1、局部作用域 &#xff08;1&#xff09;函数作用域 &#xff08;2&#xff09;块作用域 let和const会产生块作用域 &#xff0c;而var不会产生块作用域 2、全局作用域 script标签和js文件的【最外层】变量 3、作用域链 本质&#xff1a;底层的变量查找机制 4、JS…

js 数组方法汇总(ES5数组方法,ES6新增的数组方法)

ES5,ES6数组方法汇总 ES5 数组方法&#xff1a;&#xff1a; concat()&#xff1a;合并多个数组为一个数组。 var array1 [1, 2, 3];var array2 [4, 5, 6];var newArray array1.concat(array2);console.log(newArray); // [1, 2, 3, 4, 5, 6]join()&#xff1a;将数组的所…

Docker(二):Docker常用命令

docker 查看docker支持的所有命令和参数。 ➜ ~ docker Management Commands:config Manage Docker configscontainer Manage containersimage Manage imagesnetwork Manage networksnode Manage Swarm nodesplugin Manage pluginssecret …

《手把手教你》系列技巧篇(四十九)-java+ selenium自动化测试-隐藏元素定位与操作(详解教程)

1.简介 对于前端隐藏元素&#xff0c;一直是selenium自动化定位元素的隐形杀手&#xff0c;脚本跑到隐藏元素时位置时报各种各样的错误&#xff0c;可是这种隐藏的下拉菜单又没有办法避免&#xff0c;所以非常头痛&#xff0c;这一篇只为交流隐藏元素自动化定位处理方法以及宏哥…

Docker进阶:Docker-cpmpose 实现服务弹性伸缩

Docker进阶&#xff1a;Docker-cpmpose 实现服务弹性伸缩 一、Docker Compose基础概念1.1 Docker Compose简介1.2 Docker Compose文件结构 二、弹性伸缩的原理和实现步骤2.1 弹性伸缩原理2.2 实现步骤 三、技术实践案例3.1 场景描述3.2 配置Docker Compose文件3.3 使用 docker-…

一文彻底搞懂MySQL索引

文章目录 1. 索引的优缺点2. 创建索引准则3. 索引的分类4. 索引实现5. 操作索引 1. 索引的优缺点 MySQL索引是一种数据结构&#xff0c;用于提高数据库查询效率。它可以快速定位到表中符合特定条件的数据行&#xff0c;从而加快查询速度。索引通常是根据表中的一个或多个字段创…