C,C++——指针详解

目录

1.指针的基本概念 

代码示例:

2.指针所占内存空间 

代码示例:

3.空指针和野指针 

代码示例:

4.const修饰指针 

代码示例:

5.指针和数组 

代码示例:

6.指针和函数 

代码示例:

7.指针,数组,函数 练习

代码示例:


1.指针的基本概念 

24474044ffb74846bd2686a41bde69e7.png

642f0f98f8c149188a6c7e5016d4d3d2.png

代码示例:

#include<bits/stdc++.h>
using namespace std;

int main()
{
	int a = 10;
	
	int *p;
	
	p = &a;
	cout << &a << endl;
	cout << p << endl;
	
	cout << "*p = " << *p << endl;
	return 0;
}

2.指针所占内存空间 

643085580d444868aa1bdf42f3b7ff5d.png

1188d4f4b71d4a3aab5ce387fde5f597.png

代码示例:

#include<bits/stdc++.h>
using namespace std;

int main()
{
	//在32位操作系统下,指针占4个字节空间大小,无论是什么数据类型
	//在64位操作系统下,指针占8个字节空间大小,无论是什么数据类型
	cout << sizeof(int *) << endl;
	cout << sizeof(double *) << endl;
	cout << sizeof(float *) << endl;
	cout << sizeof(char *) << endl;
	return 0;
}

3.空指针和野指针 

092b1e0176fa43358aff8ee742879a57.png

9191b7dfb8a34800903315aa0672f34c.png

代码示例:

#include<bits/stdc++.h>
using namespace std;

int main()
{
//空指针用于给指针变量初始化,并且空指针指向的内存不可以被访问
	int *p = NULL;
	*p = 100;
	
//在程序中,尽量避免出现野指针
	int *p1 = (int *)0x1100;
	cout << *p1 << endl;
	return 0;
}

61a2922acbf94f1c9f082e093f988e94.png

4.const修饰指针 

f8c891f12d56414cab21533f563c0ddc.png

3737ef491e6041b48d9479abf8c1e9dc.png

b7998de26eec4912b5482749a2e9df89.png

4e4ea326515b4f0ba0a68dfc0160272a.png

代码示例:

#include<bits/stdc++.h>
using namespace std;

int main()
{
	int a = 10;
	int b = 10;
	
	//第一种,常量指针
	const int *p1 = &a;
	//指针指向的值不可以修改,指针的指向可以修改
	//*p1 = 20//错误
	p1 = &b;//正确
	
	//第二种,指针常量
	int *const p2 = &a;
	//指针指向的值可以修改,指针的指向不能修改
	*p2 = 20;//正确
	//*p2 = &b//错误
	
	//第三种,const修饰指针和常量
	const int * const p3 = &a;
	//指针指向的值和指针的指向都不能修改
	//*p3 = 20;//错误
	//p3 = &b;//错误
	
	return 0;
}

74e7e2bc09c14c08a44553316ece7fa4.png

5.指针和数组 

e8d4537ac0824a33b44ba53aa87a7359.png

代码示例:

#include<bits/stdc++.h>
using namespace std;

int main()
{
	int arr[] = {1,3,7,5,4,2,9,0};
	int *p = arr;
	cout << *p << endl;
	p++;
	cout << *p << endl;
	return 0;
}

6.指针和函数 

2df845fbfcce4df2b6caa890ca24f772.png

386c7e9679724b83b1099b1e9b94dee0.png

代码示例:

#include<bits/stdc++.h>
using namespace std;

void swap(int *a,int *b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
}

int main()
{
	int a = 10;
	int b = 20;
	cout << "交换前a的值为:" << a << endl;
	cout << "交换前b的值为:" << b << endl;
	
	swap(&a,&b);
	
	cout << "交换后a的值为:" << a << endl;
	cout << "交换后b的值为:" << b << endl;
}

 

90622b384f874ff282b7b3ffd71aec67.png

7.指针,数组,函数 练习

d4d20ce7f1b2415bbcc440c9e23cb35f.png

代码示例:

#include<bits/stdc++.h>
using namespace std;

void bubblesort(int *arr,int len)
{
	for(int i = 0; i < len - 1; i++)
	{
		for(int j = 0; j < len - i - 1; j++)
		{
			if(arr[j] > arr[j + 1])
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
}

int main()
{
	int arr[10] = {5,6,3,2,9,1,0,7,4,9};
	
	int len = sizeof(arr)/sizeof(arr[0]);
	
	bubblesort(arr,len);
	
	for(int i = 0; i < 10; i++)
	{
		cout << arr[i] << ' ';
	}
	
	return 0;
}

 

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

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

相关文章

python pip使用

windowsR打开cmd 跳转到安装python解释器的路径下 我装的是官网3.9版本下到了D盘的vspython配置下 假如要装jieba pip install jieba Successfully installed jieba-0.42.1有这个代表成功安装 安装好程序就可以使用了&#xff0c;打开IDLE jieba库用来分词&#xff0c;红…

java+mysql图书管理系统制作教程v1.0.0完整版

本人QQ&#xff1a;2711138299&#xff0c;需要源码的可以加我,附带数据库备份文件&#xff0c;以及建立数据库表 下面是我写在有道云笔记里面的教程&#xff0c;由于复制粘贴后&#xff0c;代码都混乱在一起了&#xff0c;不建议大家观看&#xff0c;所以想看详细教程的也可以…

苹果手机黑屏打不开怎么办?5种方法让你轻松应对

苹果手机以其卓越的性能和流畅的操作体验赢得了全球用户的喜爱。然而&#xff0c;就像其他电子产品一样&#xff0c;苹果手机偶尔也会遇到一些问题。其中&#xff0c;苹果手机黑屏打不开是许多用户都曾遇到过的困扰。当您按下电源键&#xff0c;却发现手机屏幕一片漆黑&#xf…

2024如何做好跨境电商?7个步骤详细讲解

近几年来&#xff0c;随着互联网的发展&#xff0c;国内外的商业贸易越来越流畅&#xff0c;直播电商的火爆也带动着一大批相关的产业链发展&#xff0c;其中跨境电商就是尤为突出的一个。尽管在国内做跨境电商的企业数量非常之多&#xff0c;但仍有许多新人争相入局&#xff0…

QT-自定义参数设计框架软件

QT-自定义参数设计框架软件 前言一、演示效果二、使用步骤1.应用进行参数注册2.数据库操作单例对象3.参数操作单例对象 三、下载链接 前言 常用本地数据参数通常使用的是xml等文本的格式&#xff0c;进行本地的数据参数的存储。这种参数的保存方式有个致命的一点&#xff0c;就…

gin源码分析(1)--初始化中间件,路由组与路由树

目标 关于gin.Default()&#xff0c;gin.New()&#xff0c;gin.Use()group与子group之间的关系&#xff0c;多group与middleware之间关系中间件的类型&#xff0c;全局&#xff0c;group&#xff0c;get&#xff0c;不同类型的中间件什么时候执行。中间件 next 和abort行为如何…

用Qt浅写一个流程动画 + 随便聊聊

恍然间&#xff0c;已经有段时间没有正儿八紧的写点东西了。前段时间从前东家离职&#xff0c;最近才到新东家。这个年过得是工作若干年来最长的一次。说是武汉的就业行情不太好&#xff0c;但是我感觉也没太差&#xff0c;可能我的要求也不高吧。医疗、自动化、半导体的offer各…

JavaScript 数组元素交互最优解

利用 ES6 解构赋值&#xff1a; let arr [1, 2, 3, 4, 5];// 交互下标 1,4 元素的值 [arr[1], arr[4]] [arr[4], arr[1]];// 输出&#xff1a; [1, 5, 3, 4, 2] console.log(arr);浏览器控制台效果&#xff1a;

PCB项目设计-必知必会

版本控制 V0.0 2024-4-2 ini 一、PCB项目设计的基本概念 留空 二、原理图关键知识点 留空 三、PCB关键知识点 3.1首先看完这两篇 技术指导&#xff1a;下单前技术员必看 嘉立创PCB工艺加工能力范围说明 3.2焊盘和过孔的主要区别 焊盘主要用于器件引脚的焊接和固定&am…

OpenLayers6实战,OpenLayers实现鼠标拖拽绘制三角形,OpenLayers自定义绘制特殊图形

专栏目录: OpenLayers实战进阶专栏目录 前言 本章讲解使用OpenLayers如何绘制三角形。 OpenLayers本身是可以通过多边形绘制来绘制自行绘制三角形的,但是这种绘制方式是通过鼠标点击每个点来实现线条链接的,不支持固定的三角形这种特殊图形绘制的。 因此本章我们通过自定义…

keycloak - 鉴权quarkus

目录 一、前言 二、遇到的问题 1、keycloak中配置public访问方式如何配置keycloak 2、keycloak拦截登录后&#xff0c;重定向多次报错&#xff0c;因cookie超长 三、解决问题 1、环境说明 2、对应keycloak public访问方式的keycloak配置 3、解决cookie太长的问题 a、方…

Re-architecting I/O Caches for Emerging Fast Storage Devices——论文泛读

ASPLOS 2023 Paper 论文阅读笔记整理 问题 I/O缓存已在企业存储系统中广泛使用&#xff0c;例如使用固态硬盘&#xff08;SSD&#xff09;作为硬盘阵列&#xff08;HDD&#xff09;顶部的I/O缓存层。随着超快存储设备的出现&#xff0c;例如P5800X Optane SSD、Intel PM&…

AI绘图初探

摘要 通过SD进行AI图片生成训练学习。 1.键盘佛祖 2.跳舞的佛祖 3.编程佛祖 4.AI美女

Qt实现Kermit协议(四)

3 实现 3.3 KermitRecvFile 该模块实现了Kermit接收文件功能。 序列图如下&#xff1a; 3.3.1 KermitRecvFile定义 class QSerialPort; class KermitRecvFile : public QObject, public Kermit {Q_OBJECT public:explicit KermitRecvFile(QSerialPort *serial, QObject *…

drissionpage设置无头模式new模式

最近朋友介绍&#xff0c;所以在使用drissionpage调试项目。 写代码的时候是在有脸模式写的&#xff0c;一切正常。 但是一旦切换打无头模式&#xff0c;报错&#xff0c;找不到元素什么的。 开始以为是我的元素查找报错&#xff0c;后面用了截图发现&#xff0c;无头模式被…

银河麒麟操作系统Kylin Linux 离线安装Nginx1.21.5

一、查看操作系统版本号 nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Lance)Kernel: 4.19.90-52.15.v2207.ky10.x86_64Build: Kylin Linux Advanced Server release V10 (SP3) /(Lance)-x86_64-Build20/…

python怎么处理txt

导入文件处理模块 import os 检测路径是否存在&#xff0c;存在则返回True&#xff0c;不存在则返回False os.path.exists("demo.txt") 如果你要创建一个文件并要写入内容 #如果demo.txt文件存在则会覆盖&#xff0c;并且demo.txt文件里面的内容被清空&#xff0c;如…

HarmonyOS NEXT应用开发案例——阻塞事件冒泡

介绍 本示例主要介绍在点击事件中&#xff0c;子组件enabled属性设置为false的时候&#xff0c;如何解决点击子组件模块区域会触发父组件的点击事件问题&#xff1b;以及触摸事件中当子组件触发触摸事件的时候&#xff0c;父组件如果设置触摸事件的话&#xff0c;如何解决父组…

输油管道变电所运维系统发展趋势

摘要&#xff1a;随着现代化技术以及信息化手段的飞速发展&#xff0c;社会已经进入到了全新的发展阶段&#xff0c;这也为自动化技术的发展起到了良好的促进作用&#xff0c;特别是在目前输油管道电网快速发展的背景下&#xff0c;传统的输油管道变电站管理模式与管理系统&…

单元测试——Junit (断言、常用注解)

单元测试 Junit单元测试框架 使用 断言测试 使用Assert.assertEquals(message, 预期值, 实际值); 这段代码是用于在测试中验证某个方法的返回值是否符合预期。其中&#xff0c;"方法内部有bug"是用于在断言失败时显示的提示信息。4是预期的返回值&#xff0c;index…