首页 > 其他分享 >【C语言】冒泡排序

【C语言】冒泡排序

时间:2024-03-28 11:31:26浏览次数:21  
标签:打印 地址 冒泡排序 C语言 越界 数组名 数组

一、数组越界

数组越界是在数组本有的元素个数(内存)外,打印数组时,多出的数组内存,为数组越界

官方含义:数组下标变量的取值超过初识定义时的大小,导致对数组元素的访问出现在数组的范围之外,C语言常见错误之一

二、冒泡排序

分析代码:

先看主函数

  1. 创建数组并初始化
  2. 创建变量sz,用sizeof计算出数组的元素个数
  3. 引用冒泡排序的函数,并将数组和sz的值传到函数内
  4. 之后的代码为打印数组内容的代码

再看冒泡函数

  1. 无返回类型,arr可以用数组表示也可以用指针表示(因为是以指针形式传递的)
  2. 创建变量i,确定冒泡排序的趟数
  3. 之后for循环内是一次冒泡排序的过程
  4. 新的for循环内,创建变量j,为每一次数字移动的字数
  5. 函数原理如下图

三、数组名是什么

分析代码:

  1. 数组名为首元素的地址
  2. 打印地址,第一种直接打印数组名,第二种打印取地址&arr【0】,第三种打印&arr,结果一致
  3. 例外:sizeof内部单独放一个数组名,数组名表示整个数组,sizeof(数组名)计算的是整个数组的大小
  4. &数组名,数组名表示整个数组,取出的是整个数组的地址

给每个后面+1,会发现前两种是在整型地址后+1,即+4

但是&数组名是+20,则差一整个数组的大小

下节做两个小游戏,期待一下~

总结

以上是本人对于数组越界和冒泡排序的学习与理解

标签:打印,地址,冒泡排序,C语言,越界,数组名,数组
From: https://blog.csdn.net/weixin_63060867/article/details/137089684

相关文章

  • C语言项目(一)----- 贪吃蛇
    1.定义蛇、食物的结构体 2.初始化蛇和食物 3.开始游戏 蛇和墙的碰撞 蛇和自身碰撞 蛇和食物碰撞 重新随机食物 蛇身体增长 分数增长 方向键控制 4.游戏结束 ---1.定义蛇、食物的结构体#defineWIDTH60......
  • c语言:从键盘输入任意年月,输出该年月的天数(用switch语句完成)
    1.switch语句(1)switch是c语言的关键字,switch()后面使用花括号括起来的部分称为switch语句体。(2)紧跟在switch后一对圆括号中的表达式可以是整形表达式,以及后面的将要学习的字符型表达式等。表达式两边的一对括号不能省略。switch()(3)case也是关键字,与其后面的常量表达式合称cas......
  • C语言程序练习——汉诺塔递归
    1.题目        在终端输入汉诺塔层数n,实现将n层汉诺塔通过三座塔座A、B、C进行排列2.代码#include<stdio.h>inthannuota(intlen,intstr,inttmp,intdst){if(1==len){printf("%c->%c\n",str,dst);}else{h......
  • C语言关键字——static和extern
    大家好,今天和大家分享C语言中的两个关键字以及作⽤域和⽣命周期的有关知识,创作不易,三连支持一下吧!一、作用域和生命周期在了解static和extern之前,我们先了解一下作用域和生命周期。1.作用域作⽤域(scope)是程序设计概念,通常来说,⼀段程序代码中所⽤到的名字并不总是有效(可⽤......
  • 用C语言实现简单的五子棋小游戏(附上全代码以及思路讲解)
    目录(全代码在文末哦)  如果要实现五子棋,首先第一步要写一个菜单,让玩家可供选择,比如:输入’1‘,开始游戏,输入’0’,结束游戏。但是你不能只执行一次,所以要写一个dowhile循环,让他至少能循环一次。然后写一个switch语句,让系统来判断玩家选择的什么以此来做出相对应的动作。void......
  • 从零开始学c语言(3)
    常用运算符运算方法&(按位与)  |(按位或)^(按位异或) <<(左移)>>(右移) ~(按位求反) ......
  • C语言学习之第一个C语言程序【建议收藏】
    环境搭建好了C语言学习之环境搭建【建议收藏】-CSDN博客,接下来让我们一起来用VC编写第一个C语言程序吧!保姆级教程,非常建议小白学习使用,建议收藏!第一个C语言程序 双击打开VC,然后点击新建项目:按照图上的步骤,创建新项目→点击确定引导点击下一步:应用程序设置:项目创建完成:外......
  • 数据结构——栈(C语言版)
    前言:在学习完数据结构顺序表和链表之后,其实我们就可以做很多事情了,后面的栈和队列,其实就是对前面的顺序表和链表的灵活运用,今天我们就来学习一下栈的原理和应用。准备工作:本人习惯将文件放在test.c、SeqList.c、SeqList.h三个文件中来实现,其中test.c用来放主函数,SeqList.c......
  • C语言 预处理详解
    目录前言一、预定义符号二、#define定义常量三、#define定义宏四、带有副作用的宏参数五、宏替换的规则六、宏与函数的对比七、#和##7.1#运算符7.2##运算符八、命名约定九、#undef十、命令行定义十一、条件编译十二、头文件的包含12.1头文件被包含的方式:12......
  • 网上的一个用C语言实现FFT算法
     用C语言实现FFT算法/*****************fftprograme*********************/#include"typedef.h"#include"math.h"structcompxEE(structcompxb1,structcompxb2){structcompxb3;b3.real=b1.real*b2.real-b1.imag*b2.imag;b3.imag=b1.real*b2.imag+b1.imag*b2.real;......