C语言指针系列2——加深理解

news2024/11/17 3:41:31

大家,今天讲的知识点是一块儿一块儿的,所以大家要好好学习喔~

话不多说,开始正题


关键字:const (三种用法)

1. int* const p;

2. int const* p;

3. const int* const p;

首先我们要了解一下const,const是用来修饰普通变量的,具有常属性,不能被修改

那么这三种const修饰指针的用法有什么区别呢?

我们用代码来解释一下: 

1. int* const p;

#include <stdio.h>
int main() {
	int a = 0;
	int* const p = &a;
	printf("%d\n", *p);
	*p = 20;
	printf("%d\n", *p);
	return 0;
}

我们发现第一种情况下我们可以修改指针所指a的大小,但是指针变量本身的值不能被改变

2. int const* p;

#include <stdio.h>
int main() {
	int a = 0;
	const int* p = &a;
	printf("%p\n", p);
	p = 20;
	printf("%p\n", p);
	return 0;
}

而第二种用法则可以改变指针变量本身的值,但是不能改变指针变量所指的内容

 3. const int* const p;

而第三种情况,则会报错,说明都不能被修改 

这就是我们要了解到的第一个模块,下面我们来到第二个模块

指针运算

1. 指针 +- 整数

2. 指针 - 指针

关于这两类,咱们一起来用代码来理解

1. 指针 +- 整数

其实指针加减整数其实就是指向后几个或者前几个的元素

#include <stdio.h>
int main() {
	int a[3] = { 1,2,3 };
	int* p = &a;//这里的数组名表示数组首元素地址
	printf("%d\n", *(p));//首元素地址所指的内容
	printf("%d\n", *(p + 1));//第二个元素地址所指的内容
	return 0;
}

//这里的结果就是1和2

 2. 指针 - 指针

#include <stdio.h>
int main() {
	int a[3] = { 1,2,3 };
	int* p = &a;//这里的数组名表示数组首元素地址
	printf("%d\n", &a[2] - &a[0]);//表示元素之间的个数
	return 0;
}

字符指针

这里其实字符指针和我们前面提到的整型指针大差不差,这里我们来用代码举个例子

#include <stdio.h>
int main() {
	char ch[] = "asdfgh";
	char* pc = &ch;
	printf("%c\n", *pc);//这里的pc是首元素地址
	return 0;
}

//结果为a

 这就是今天我们学的几个模块,冲鸭!!!

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

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

相关文章

828华为云征文|使用Flexus X实例安装宝塔面板教学

目录 一、Flexus X实例简介 1.1 概述 1.2 产品规格 二、切换操作系统 2.1 Huawei Cloud EulerOS 2.0 标准版 2.2 切换镜像 三、部署宝塔面板 3.1 安装宝塔面板 3.2 放通安全组规则 3.3 登录宝塔面板 四、使用感受 4.1 柔性算力随心配 4.2 一直加速一直快 4.3 越用…

C++之分割字符串的两种方式

方式一 #include <string> #include <vector> #include <sstream> #include <iostream>std::vector<std::string> split(const std::string& str, char delim) {std::stringstream ss(str);std::string item;std::vector<std::string>…

防火墙-CentOS7-firewalld

文章目录 一、防火墙以及Linux防火墙服务介绍什么是防火墙&#xff0c;有什么用防火墙的结构防火墙的作用为什么需要防火墙防火墙何时需要开启防火墙何时可以关闭名词什么是入站&#xff1f;出站 Linux防火墙发展历程1. 初期阶段2. iptables的出现3. 发展与扩展4. nftables的引…

Codeforces Round 592 (Div. 2) C题 The Football Season(Exgcd)

题目链接 https://codeforces.com/problemset/problem/1244/C 思路 其实就是要求 a x b y c axbyc axbyc的一组 x y xy xy的最小整数解。因为题目保证了 a > b a>b a>b&#xff0c;所以只需要使得 y y y最小即可。 我们对 a x b y c axbyc axbyc推导得到&…

jmeter断言---响应断言

请求http://www.baidu.com 检查&#xff1a;让程序检查响应数据中是否包含“百度一下&#xff0c;你就知道” 操作步骤&#xff1a; 1.添加线程组 2.添加http请求 3.添加断言&#xff08;需要在http请求下添加断言&#xff0c;而且可以根据断言测试字段等信息新建不同的断…

黑盒测试与白盒测试总结

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 黑盒测试与白盒测试是软件测试中两种不同的测试方法&#xff0c;它们的主要区别在于测试者对被测试软件的了解程度。下面&#xff0c;我们将详细介绍这两种测试方…

Windows大幅提高内存使用率,大幅减少内存占用率

事情原因&#xff1a;在笔记本16G内存使用生产力工具不够用的情况下&#xff0c;我把内存条加到了32G&#xff0c;开始的时候是好的&#xff0c;后来打开个IDEA&#xff0c;居然占用了80%的内存&#xff0c;其实IDEA也就占了4G内存&#xff0c;后经过查阅资料后得出了解决办法……

Fabric V2.5 通用溯源系统——使用Hyperledger Caliper压力测试

Hyperledger Caliper 0.6.0 是一款测试区块链性能的工具,支持Hyperledger Fabric、Ethereum等,支持丰富的测试配置参数,测试完成后将直接输出报告,相较于tape更加专业,但是配置稍微有些复杂。本文将一步一步配置Caliper以测试Fabric V2.5 通用溯源系统中的注册用户、查询用…

Java语法-类和对象之继承与多态(中)

1. 继承 为什么要继承? 从生物学角度来说,继承就是把父辈的基因遗传给子代,然后子代再在细胞分裂的途中产生变异,生成比父辈更加适应环境的物种.其中很重要的就是继承给子代的基因(父类的方法和属性)和子代在父辈的基础上产生的变异(方法的重写). 比如猫和狗都是哺乳动物,是在…

刷题小记3----每日一题精进Java技能(详细思路解析✅)

文章目录 一、两种排序方法二、最小公倍数三、另类加法四、倒置字符串五、统计回文 一、两种排序方法 题目链接&#xff1a;两种排序方法 题目描述&#xff1a; 考拉有n个字符串字符串&#xff0c;任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法&#x…

相亲交友系统软件大比拼

在当今社会&#xff0c;相亲交友系统已成为许多单身人士寻找理想伴侣的重要途径之一。随着技术的发展&#xff0c;各种相亲交友软件层出不穷&#xff0c;它们各自拥有独特的特色和服务模式。今天&#xff0c;我们将对几款热门的相亲交友系统软件进行一番大比拼&#xff0c;看看…

技术成神之路:设计模式(十六)代理模式

介绍 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构性设计模式&#xff0c;它通过代理对象来控制对另一个对象的访问。代理对象在功能上与真实对象相似&#xff0c;但可以在访问真实对象前后添加一些额外的处理。代理模式常用于控制对某个对象的访问、延迟实例化、…

【隐私计算篇】利用多方安全计算MPC实现VGG16人脸识别隐私推理

1. 背景介绍 本文主要介绍一种利用多方安全计算MPC技术&#xff0c;实现VGG16的人脸识别模型&#xff0c;侧重于模型推理阶段&#xff0c;目前已经公开专利&#xff0c;因此以下内容的分享都是基于公开材料。该分享涉及到最小化多方安全计算(MPC)以及明密文混合计算的思想&…

【Python报错已解决】TypeError: tuple indices must be integers or slices, not str

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

??实验——完全使用Ansible部署多台服务器的服务

文章目录 需求两台Web服务器部署同一Web应用WeCenter&#xff0c;且两台服务器的用户上传的数据目录挂载到共享存储服务器中&#xff0c;总数据保存在一台数据库服务器中使用sersync简单实现两台共享存储服务器之间的Web应用共享数据目录的数据同步每天定时将两台Web服务器的We…

高效检测围栏翻越的视觉分析算法

随着社会安全防范需求的不断增加&#xff0c;围栏作为重要的防护手段&#xff0c;被广泛应用于公共场所、工业园区、住宅区等区域。然而&#xff0c;传统的围栏虽然能起到一定的阻隔作用&#xff0c;却无法有效监控和防止人为的翻越行为。近年来&#xff0c;智能监控技术的兴起…

828华为云征文|Flexus云服务器X实例实践:安装SimpleMindMap思维导图工具

828华为云征文&#xff5c;Flexus云服务器X实例实践&#xff1a;安装Ward服务器监控工具 引言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 主要使用场景 二、购买Flexus云服务器X实例2.1 购买规格参考2.2 查看Flexus云服务器X实例状态 三、远程连接Flexus云服务…

C++类和对象——第二关

目录 类的默认成员函数&#xff1a; &#xff08;一&#xff09;构造函数 &#xff08;二&#xff09;析构函数 &#xff08;三&#xff09;拷贝构造函数 类的默认成员函数&#xff1a; 类里面有6个特殊的成员函数分别包揽不同的功能; &#xff08;一&#xff09;构造函数…

基于nodejs+vue的小型企业工资管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

[附源码]在线音乐系统+SpringBoot+Vue前后端分离

今天带来一款优秀的项目&#xff1a;在线音乐系统源码 。 系统采用的流行的前后端分离结构&#xff0c;内含功能包括 "管理后台"&#xff0c;“用户端”&#xff0c;“评论系统”&#xff0c;“歌手&#xff0c;歌曲管理”&#xff0c;“用户系统”,"统计"…