初识指针3の学习笔记

目录

1>>前言

2>>冒泡排序

3>>二级指针

4>>指针数组

5>>指针数组模拟二维数组

6>>结语


1>>前言

今天我会继续分享一些我做的笔记,以及我对指针的理解, 后续会持续分享指针几天,毕竟指针的内容太多了,一天我也学不完,也分享不完,感谢大家理解,希望我的文章对大家有所帮助,谢谢!

2>>冒泡排序

在计算机中有众多排序,如选择排序,计数排序,直接排序等等,冒泡排序 是最简单和最通用的排序方法,其基本思想是:在待排序的一组数中,将相邻的两个数进行比较若前面的数比后面的数大就交换两数,否则不交换;如此下去,直至最终完成排序。由此可得,在排序过程中,大的数据往下沉,小的数据往上浮,就像气泡一样从大到小或从小到大,于是将这种排序算法形象地称为冒泡排序。

给定一个题目:请输入十个数,打印出它们排序前和排序后的结果

需要十个数就用数组存储,那么两两相邻的相比不就是数组两个相邻元素的比较吗?所以使用j和j+1进行比较 ,这里要注意j要<9 ,因为这样操作的就是0-8下标的值,j+1就不会越界 ,并且每次循环都将一个最大的放到最右边了,所以j<9-i每次循环少循环一次

到这里,基本框架已经完成,我们只需再完善一下:如果我们输入的十个数是9 0 1 2 3 4 5 6 7 8,那么会发现,即使我们第一次循环就已经排序完成,但是循环还是进行了 ,那么此时我们就可以加入一个布尔值变量,在循环开始定义为1 ,如果对数值进行两两替换,那么布尔值就为0 ,若出来为1就跳出循环即可,这种操作广泛用于各种循环和一些满足条件跳出的代码,可以充分减少运行次数。

附上:

cpp 复制代码
#include <stdio.h>

void dayin(int arr[10])
{
	int i=0;
	for (i=0;i<10;i++)
	{
		printf("%d ",arr[i]); 
	}
	printf("\n");
 } 
void maopao(int arr[10])
{
	int i=0;
	for (i=0;i<10;i++)
	{
		int j=0;
		int flag=1;
		for (j=0;j<9-i;j++)
		{
			if (arr[j]>arr[j+1])
			{
				int z=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=z; 
				flag=0;
			}
		}
		if (flag)
		{
			break;
		}
	}
}
int main()
{
	int arr[10];
	int i=0;
	printf("请输入十个数:>"); 
	for (i=0;i<10;i++)
	{
		scanf("%d",&arr[i]);
	}
	printf("打印前:>");
	dayin(arr);
	maopao(arr);
	printf("打印后:>");
	dayin(arr);
	return 0;
}

3>>二级指针

二级指针不难理解,就纯套娃,听小编细细说来:有一个一级 指针p 存放的 变量a 的 地址,那么指针p也是一个指针变量 ,那么它是不是也有地址呢?答案是肯定的,这边再拿一个 指针pp 存放指针p 的地址,那么对pp解引用一次就是指针p解引用两次自然就是a,此时就能实现 pp 对 a变量内容的修改。

等价:**pp=*p=a

4>>指针数组

之前学过整形数组用于存放整形,还学过字符数组用于存放字符,那么指针数组顾名思义用于存放一个个指针:

5>>指针数组模拟二维数组

二维数组一个元素就是一个一维数组,那么我们将二维改成指针,会发生什么呢?

使用指针数组存放每个一维数组,arr里的arr1、arr2、arr3都代表首元素地址 ,对arr[0]进行解引用得到的就是arr1[0]的地址,得到首元素地址后,整个数组都可以知道:**+1就是arr1[1]的地址,+2就是arr1[2]的地址。**arr2也是一样这里就不过多赘述了。我们想要打印出它们也很简单:

**这里的*(arr[i])+j)可以替换为arr[i][j],**在上一篇文章讲过数组底层原理,这里不懂的可以翻翻:

初识指针2の学习笔记-CSDN博客

6>>结语

今天又学习了很多内容,以学习笔记+经验的方式呈现给大家希望能得到大家喜欢谢谢大家! 能看到这的我都坚信能有所收获,你的耐心给将来的你最大的帮助,谢谢观看!期待下篇与你的相见!

相关推荐
hopetomorrow19 分钟前
学习路之压力测试--jmeter安装教程
学习·jmeter·压力测试
hopetomorrow20 分钟前
学习路之PHP--使用GROUP BY 发生错误 SELECT list is not in GROUP BY clause .......... 解决
开发语言·学习·php
/**书香门第*/1 小时前
Cocos creator 3.8 支持的动画 7
学习·游戏·游戏引擎·游戏程序·cocos2d
带多刺的玫瑰1 小时前
Leecode刷题C语言之统计不是特殊数字的数字数量
java·c语言·算法
美式小田1 小时前
单片机学习笔记 9. 8×8LED点阵屏
笔记·单片机·嵌入式硬件·学习
猫爪笔记1 小时前
前端:HTML (学习笔记)【2】
前端·笔记·学习·html
_不会dp不改名_1 小时前
HCIA笔记3--TCP-UDP-交换机工作原理
笔记·tcp/ip·udp
陌小呆^O^2 小时前
Cmakelist.txt之win-c-udp-server
c语言·开发语言·udp
时光の尘2 小时前
C语言菜鸟入门·关键字·float以及double的用法
运维·服务器·c语言·开发语言·stm32·单片机·c
-一杯为品-2 小时前
【51单片机】程序实验5&6.独立按键-矩阵按键
c语言·笔记·学习·51单片机·硬件工程