指针+一维整型数组的基本运用 和 指针+一维整型数组的初步学习
一,调式程序的技巧:
1.明确问题
2.定位问题
3.加打印(打印核心数据0)
二,指针的回顾
1.指针的概念:指针就是地址(内存单元的编号),是一个数据类型(指针类型)
指针在不同于句中: 定义指指针指的是定义一个指针变量(int *p)
打印指针某个变量的指针,就是打印出一个地址的内容
2.指针变量的定义: 基类型*变量名
基类型:数据类型 / 基本数据类型 / 数组类型 / 指针类型
* : *定义的是一个指针类型的变量,修饰指针变量名的
*p的运算:s1;拿p中的地址到内存定位 ; s2:定位处偏移基类型大小的空间 ; s3:被当作了基类型变量来看
3.注意事项:指针变量的大小 64位(8字节), 32(四字节) ; 指针类型存储的是地址,特殊的数据 ; 指针变量的给值:int *p --- 野指针,没有初始化,被当作了地址,所以要避免野指针,一般初始化为 NULL
4.指针的核心用途:被调函数修改主调
用法:修改谁就传谁的地址 ; *p的运算---间接访问
5.指针+ 一维整型数组(指针操作一维)
int a[10];; int *p=a;
*(p+i) == int 型变量 a[i] == p[i] == *(a+i)
6.关系运算:
b>q ; b<q ; & ; * ;
p-q (前提是同一类型的指针,表示之间差了几个基类型)
指针不能做加法运算
迭代运算:本质就是可以利用指针访问到每一个元素的地址
迭代实现选择排序冒泡排序:
选择排序:

冒泡排序:

三,快速排序(时间复杂度为 n *log n)
快速排序本质就是定义一个基准值,通过从右向左找最大值,再从左向右找最小值,交换,然后循环直至begin和end相等时,此时划分两个部分,然后分别定义基准值重复找数换位的步骤,直至begin>end的时候结束。
快速排序示意图:

快速排序的程序:
void quickSort(int *begin,int *end) //快速排序
{int *p = begin; //记录开始的位置和最右边的位置int *q= end;int *k = begin; //第一步,确定基准值,a[0]if(begin>end) //结束递归的条件{return ;}while(begin<end) //begin 和 end 不能反过来,而且直到它们相遇停止循环{while(begin < end && *end >= *k) //第二步,从右边(最后一项)开始找,找到第一个比基准值小的值{--end; //没找的话向前移位}while(begin < end && *begin <= *k) //第三步,从左边(a【0】)开始找,找到第一个比基准值大的值{begin++; //没找到向后移位}swap(begin,end); //最大值最小值都找到了,进行它俩的换位} //回到循环起始点,接着找最大值最小值swap(begin,k); //此时相遇位置上的值与基准值交换quickSort(p,end-1); //针对数小的一部分,此时begin为开始的a【0】,end为end地址中的新end-1quickSort(begin+1,q); //针对数字大的部分,此时begin为地址begin+1,end为开始的end
}
四,指针+ 一维字符型数组
char *p = s ; s就是数组首元素的地址
int puts(const char *s);
const char *S;
const int a;//只读变量
int a=10;
const int*p=&a; //表示基类型 为只读
p---指针变量--本身的类型int*
a---int型变量--本身类型int
const char * 的好处:
1.可以接收字符数组名,也可以接受字符串常量,提高了参数的适用性
2.避免了可能出现的修改的操作,也可以将运行时的错误,提前到编译时发现
四,相关程序
1.数组的逆序,指针。
void nixuArray(int *begin, int *end) //逆序,纯指针形式
{while(begin<end){int t = *begin;*begin = *end;*end = t;++begin;--end;}}
2.插入排序
void paixuArray(int *begin,int *end) //插入排序,纯指针
{int *p =begin;int *q =NULL;for(p=begin;p<=end;p++){int t = *p;q=p;while(q>begin&&*(q-1)>t){*q=*(q-1);--q;}*q=t;}
}
3.二分查找
int *binaryD(int *begin,int *end,int n) //二分查找
{int *mid=NULL;mid = begin+(end-begin+1)/2;int *ret=NULL;if(begin>end){ret = NULL;}if(*mid>n){end=mid-1;ret = binaryD(begin,end,n);}else if(*mid<n){begin=mid+1;ret = binaryD(begin,end,n);}else{ret = mid;}return ret;
}
4.输入/输出字符串
void Gets(char *s) //输入字符串
{do{*s = getchar();}while(*s++!='\n');s--;*s='\0';
}void Puts(const char *p) //输出字符串
{while(*p!='\0'){putchar(*p);++p;}putchar('\n');
}
5.相关输出
int main(void)
{int a[5]={1,2,4,3,5};int i=0;//nixuArray(a,a+4); //逆序的输出//paixuArray(a,a+4); //排序的输出(charu)//int x=3;//int *ret = binaryD(a,a+4,5);//printf("%d\n",*ret); //二分查找的输出//for(i=0;i<5;i++)//{//printf("%d",a[i]);//}//putchar('\n');return 0;
}
相关文章:
指针+一维整型数组的基本运用 和 指针+一维整型数组的初步学习
一,调式程序的技巧: 1.明确问题 2.定位问题 3.加打印(打印核心数据0) 二,指针的回顾 1.指针的概念:指针就是地址(内存单元的编号),是一个数据类型(指针类型…...
APP测试基本流程以及APP测试要点总结
🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 APP测试实际上依然属于软件测试的范畴,是软件测试的一个真子集,所以经典软…...
GPT-4 Vision调试任何应用,即使缺少文本日志 升级Streamlit七
GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二翻译: GPT-4 Vision静态图表转换为动态数据可视化 升级Streamlit 三翻译: GPT-4 Vision从图像转换为完全可编辑的表格 升级St…...
ppt形状导入draw.io
draw.io里面的形状还是有点少,我有时想找一个形状,发现PPT里有,但draw.io里有,比如 也就是这个形状 最简单的想法就是我直接把这个形状在PPT里存成图片(png),然后再导入到draw.io里,但是结果是…...
GoLang和GoLand的安装和配置
1. GoLang 1.1 特点介绍 Go 语言保证了既能达到静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容 Go 语言:Go C Python , 说明 Go 语言既有 C 静态语言程序的运行速度,又能达到 Python 动态语…...
BGAD文章复现笔记-1
文章名:《Explicit Boundary Guided Semi-Push-Pull Contrastive Learning for Supervised Anomaly Detection》 原作者代码:https://github.com/xcyao00/BGAD 复现过程: 系统Ubuntu22.04, PyTorch1.12.1,python3.9 下载原作者…...
【EI会议推荐】第六届下一代数据驱动网络国际学术会议(NGDN 2024)
第六届下一代数据驱动网络国际学术会议(NGDN 2024) The Sixth International Conference on Next Generation Data-driven Networks 2024年4月26-28日 | 中国沈阳 *NGDN 2024已进入中国学术会议在线推荐列表:Click 基于前几届在英国埃克塞…...
聊聊java中的Eureka和Nacos
本文主要来自于黑马课程中 1.提供者与消费者 在服务调用关系中,会有两个不同的角色: 服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务) 服务消费者:一次业务中࿰…...
系统架构设计师-21年-上午试题
系统架构设计师-21年-上午试题 更多软考资料 https://ruankao.blog.csdn.net/ 1 ~ 10 1 前趋图(Precedence Graph)是一个有向无环图,记为:→{(Pi,Pj)|Pi must complete before Pj may strat},假设系统中进程P{P1,P2,P3…...
数据库MySQL查询设计||给定四个关联表,其定义和数据加载如下:-- 学生表 Student-- 选课表 SC
SQL查询设计 给定四个关联表,其定义和数据加载如下: -- 学生表 Student create table Student(Sno varchar(6), Sname varchar(10), Sdate datetime, Ssex varchar(10)); insert into Student values(01 , 赵雷 , 1999-01-01 , 男); insert into St…...
C#使用RabbitMQ-3_发布订阅模式(扇形交换机)
简介 发布订阅模式允许一个生产者向多个消费者发送消息。在RabbitMQ中实现发布订阅模式通常涉及以下几个关键组件: 生产者:负责生产并发送消息到RabbitMQ的Exchange(路由器)。Exchange:作为消息的中转站,…...
区块链游戏解说:什么是 SecondLive
数据源:SecondLive Dashboard 作者:lesleyfootprint.network 什么是 SecondLive SecondLive 是元宇宙居民的中心枢纽,拥有超过100 万用户的蓬勃社区。它的主要使命是促进自我表达,释放创造力,构建梦想中的平行宇宙…...
构建基于Flask的跑腿外卖小程序
跑腿外卖小程序作为现代生活中的重要组成部分,其技术实现涉及诸多方面,其中Web开发框架是至关重要的一环。在这篇文章中,我们将使用Python的Flask框架构建一个简单的跑腿外卖小程序的原型,展示其基本功能和实现原理。 首先&…...
【算法】Partitioning the Array(数论)
题目 Allen has an array a1,a2,…,an. For every positive integer k that is a divisor of n, Allen does the following: He partitions the array into n/k disjoint subarrays of length k. In other words, he partitions the array into the following subarrays: [a1,…...
ASP.NET Core 7 Web 使用Session
ASP.NET Core 好像不能像20年前那样直接使用Session函数,我使用如下方法 1、在NuGet安装以下2个包 2、在Program.cs注册 //注册Session builder.Services.AddSession(options > {options.IdleTimeout TimeSpan.FromMinutes(60);options.Cookie.HttpOnly fals…...
(1)SpringBoot学习——芋道源码
Spring Boot 的快速入门 一.、概述 使用 Spring Boot 可以很容易地创建出能直接运行的独立的、生产级别的基于 Spring 的应用。 二、快速入门 2.1 创建 Maven 项目 打开 IDEA,点击菜单 File -> New -> Project.来创建项目选择 Maven 类型,点击「…...
宏景eHR FrCodeAddTreeServlet SQL注入漏洞复现
前言 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 一、产…...
STM32——I2C
通信协议见(STM32——SPI) 一、I2C协议 1.1 I2C协议介绍; I2C是(Inter IC Bus)是由Philips公司开发的一种通用数据总线; 有多根通信线; 一根SDA(串行通信线)…...
笔记本从零安装ubuntu server系统+环境配置
文章目录 前言相关链接ubuntu Server 安装教程屏幕自动息屏关上盖子不休眠MobaXterm外网SSH内网穿透IPV6远程 为什么我要笔记本装Linux为什么要换ubuntu Server版能否连接wifi之后Linux 配置清单总结 前言 之前装了个ubuntu desktop 版,发现没有命令行,…...
SQL 快速参考手册
SQL 语句语法AND / ORSELECT column_name(s) FROM table_name WHERE condition AND|OR conditionALTER TABLEALTER TABLE table_name ADD column_name datatype 或者: ALTER TABLE table_name DROP COLUMN column_name AS (alias)SELECT column_name AS column_alia…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
