考研C语言刷题基础篇之数组(一)

目录

第一题:用数组作为参数实现冒泡排序

不用函数的冒泡排序

冒泡排序原理:

错误的数值传参冒泡排序

错误的原因 

就是什么是数组名

正确的数组传参的冒泡排序 

数组的地址和数组首元素的地址的区别 


第一题:用数组作为参数实现冒泡排序

不用函数的冒泡排序

冒泡排序原理:

一共经过n-1次排序:相邻之间两两作比较。交换位置

 

 

//数组作为参数实现冒泡排序int main()
{int arr[] = { 10,9,8,7,6,5,4,3,2,1 };int sz = sizeof(arr) / sizeof(arr[0]);for(int i=0;i<sz-1;i++){for(int j=0;j<sz-1-i;j++){if (arr[j] > arr[j + 1]){int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}for(int i=0;i<sz;i++){printf("%d ", arr[i]);}return 0;}

 

错误的数值传参冒泡排序

我们将冒泡的实现封装成一个函数,这时我们发现出来,问题,打印的结果并没实现冒泡排序

//错误的数组作为参数实现冒泡排序
void bubble_sort(int arr[])
{int i = 0;int sz = sizeof(arr) / sizeof(arr[0]);for (int i = 0; i < sz - 1; i++){for (int j = 0; j < sz - 1 - i; j++){if (arr[j] > arr[j + 1]){int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}
}int main()
{int arr[] = { 10,9,8,7,6,5,4,3,2,1 };bubble_sort(arr);int i = 0;for(i=0;i<10;i++){printf("%d ", arr[i]);}return 0;}

 

错误的原因 

这是因为,有一个知识点需要补充。

就是什么是数组名

什么是数组名arr

  1. 数组名其实是地址,而且是首元素的地址
  2. 但是有两个特例不是首元素的地址
    1. sizeof(arr)这里不是首元素的地址,这里是整个数组的大小
    2. &arr,对数组取地址,这里不是对首元素取地址,这里是对数组取地址
  3. 除了这两个特例以外,其他的情况都是首元素的地址
  4. 数组是数组同样其实也是指针,因此可以用数组接收,也可以用指针接收

下面我们用的数组名arr传参,这里arr是首元素的地址。 

bubble_sort(arr);

参数传给

void bubble_sort(int arr[])
//也可以用
void bubble_sort(int* arr)

 被下面的调用,但是由于arr是首元素的地址,所以sizeof(arr)求出的是首元素的大学4字节,

sizeof(arr【0】)也是首元素的地址4字节。所以这是式子的结果为1;并非实际大小10.

	int sz = sizeof(arr) / sizeof(arr[0]);

正确的数组传参的冒泡排序 

//正确的数组作为参数实现冒泡排序
void bubble_sort(int arr[],int sz)
{int i = 0;for (int i = 0; i < sz - 1; i++){for (int j = 0; j < sz - 1 - i; j++){if (arr[j] > arr[j + 1]){int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}
}int main()
{int arr[] = { 10,9,8,7,6,5,4,3,2,1 };int sz = sizeof(arr) / sizeof(arr[0]);bubble_sort(arr,sz);int i = 0;for(i=0;i<10;i++){printf("%d ", arr[i]);}return 0;}

数组的地址和数组首元素的地址的区别 

虽然数组名在一些情况相当于数组首元的地址,但是这并不能代表数组的地址等于数组首元素的地址。

 下面我们可以看出,数组名和数组首元素还有数组的地址的地址是一样的

 而当我们对数组的地址和数组首元素的地址+1之后,就会发现他们并不一样。

我们发现数组名+1,和数组首元素+1,相当于地址加了4,这是应为他们加一相当于跳过了一位元素,四个字节。

而数组的地址加一,相当于整个数组10个元素都+1,那么就加了40个字节的地址。

 

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

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

相关文章

Docker网络配置与自定义IP容器通信

目录 前言 一、docker网络配置 1. bridge 虚拟网桥 2. host 网络模式 3. none 网络模式 4. 自定义container网络模式 二、自定义IP容器通信 1. 自定义IP 2. 创建所需容器&#xff08;mysql&#xff0c;tomcat&#xff09; 3. 准备项目资源 4. 构建Nginx实现负载均衡…

this指向问题以及修改函数的this指向方法

1、什么是this this表示对象 取决于函数调用&#xff08;this表示对象>当前对象>当前环境对象>函数运行时环境对象&#xff09; this就是函数运行时所在的环境对象&#xff08;取决于函数调用>不同场合&#xff0c;this有不同的值&#xff09; 函数的不同使用场…

PyTorch深度学习实战(32)——DCGAN详解与实现

PyTorch深度学习实战&#xff08;32&#xff09;——DCGAN详解与实现 0. 前言1. 模型与数据集分析1.1 模型分析1.2 数据集介绍 2. 构建 DCGAN 生成人脸图像小结系列链接 0. 前言 DCGAN (Deep Convolutional Generative Adversarial Networks) 是基于生成对抗网络 (Convolution…

PWN入门Protostar靶场Stack系列

Protostar靶场地址 https://exploit.education/protostar/溢出 源码分析 #include <stdlib.h> #include <unistd.h> #include <stdio.h>int main(int argc, char **argv) {volatile int modified; //定义一个变量char buffer[64]; //给…

Git 入门精讲

我们为什么要学习git&#xff1f; 就当下的发展而言&#xff0c;只要你从事开发就一定会接触git。作为最强大的分布式版本控制器&#xff0c;git 与 svn 有着本质上的区别。 Git是一种分布式版本控制系统&#xff0c;每个开发者都可以在本地维护完整的代码库&#xff0c;可以离…

c++ 加密与解密代码(普通加密 + 凯撒加密 + 图灵来了都解不开的加密)

当你和你的好朋友聊天的时候&#xff0c;你们的聊天内容很容易就被看出来&#xff0c;那么小天狼星这边可以给到一些建议~~ 一、用另一种语言 通常来说&#xff0c;使用除中文和其他常用语言外的语言是一个优秀的选择&#xff01; 例如&#xff1a;乌伯克语、阿亚帕涅科语。 …

智能泊车,再上热搜

编者按&#xff1a;相比于行车&#xff0c;低速可控场景&#xff0c;更有利于泊车功能快速迭代。同时&#xff0c;对于部分消费者来说&#xff0c;泊车智能化也是加分项。 智能泊车赛道&#xff0c;正在重新成为各路势力争夺的焦点。而上一次“高潮”&#xff0c;要追溯到2018年…

开源客户沟通平台Chatwoot账号激活问题

安装docker docker-compose 安装git clone https://github.com/chatwoot/chatwoot 下载之后根目录有一个docker-compose.production.yaml将其复制到一个目录 重命名 docker-compose.yaml 执行docker-compose up -d 构建 构建之后所有容器都安装好了 直接访问http://ip:3…

护眼台灯怎么选——明基、书客、孩视宝实测横评

最近护眼台灯的热度真是不小&#xff0c;许多博主纷纷推荐。考虑到孩子即将放寒假&#xff0c;市场上的产品也是五花八门&#xff0c;于是我决定认真研究一下&#xff0c;找出其中的水货和宝藏产品。我挑选了市场上口碑较好的3款产品进行深入评估&#xff0c;主要从照度、显色指…

Revit二次开发 设置材质

设置此处材质&#xff0c;需要在材质浏览器中创建材质&#xff0c;根据材质名字设置此材质。 代码如下&#xff1a; Material material new FilteredElementCollector(doc).OfClass(typeof(Material)).FirstOrDefault(x > x.Name "窗框") as Material; Element…

如何利用streamlit 將 gemini pro vision 進行圖片內容介紹

如何利用streamlit 將 gemini pro vision 進行圖片內容介紹 1.安裝pip install google-generativeai 2.至 gemini pro 取 api key 3.撰寫如下文章:(方法一) import json import requests import base64 import streamlit as st 讀取圖片檔案&#xff0c;並轉換成 Base64 編…

Android SeekBar 进度条圆角

先看下效果图&#xff1a; 之前&#xff1a; 优化后&#xff1a; 之前的不是圆角是clip切割导致的 全代码&#xff1a; <SeekBarandroid:layout_width"188dp"android:layout_height"wrap_content"android:background"null"android:focusa…

风速预测 | Python基于CEEMDAN-CNN-Transformer+ARIMA的风速时间序列预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 CEEMDAN-CNN-TransformerARIMA是一种用于风速时间序列预测的模型&#xff0c;结合了不同的技术和算法。收集风速时间序列数据&#xff0c;并确保数据的质量和完整性。这些数据通常包括风速的观测值和时间戳。CEEMDAN分…

使用Spring Boot实现基于HTTP的API

Spring Boot是一个用于简化Spring应用程序开发的框架&#xff0c;它提供了一系列的开箱即用的功能&#xff0c;使得快速构建RESTful Web服务和基于HTTP的API变得简单。以下是使用Spring Boot实现基于HTTP的API的步骤&#xff1a; 添加依赖&#xff1a;在Maven项目中&#xff0c…

企业能源消耗监测管理系统是否可以做好能源计量与能耗分析?

能源消耗与分析是能源科学管理的基础&#xff0c;也可促进能源管理工作的改善&#xff0c;在企业中能源管理系统的作用也愈加重要。 首先&#xff0c;能源计量是能源管理的基础&#xff0c;通过能源精准计老化&#xff0c;容易出现测量设备不准确以及其他一些人为因素原因导致…

pve7.x、8.x版本一键升级、换源、优化工具脚本推荐

每次安装完pve之后都需要、换各种debain源、pve源、lxc源等、去掉弹窗、合并local-lvm等一系列的工作。还有玩硬件直通的优化。 偶然发现网上有大佬编写的一键脚本&#xff0c;pve_source 官网地址pve_source - X86派 - 迷你硬件玩家集中地 需要注册登录后能看到最新的地址 …

Oracle BIEE 示例(一)数据透视表2

1 背景 版本:BIEE 12C 视图:数据透视表 实现内容(顺序与具体内容不一致): 2 空列显示(方法一) 2.1 问题 列为空时,标题栏不显示信息。 2.2 期望 即使数据为空,也要显示列名。 2.3 官方资料 2.3.1 操作步骤 2.3.1.1 要在分析级别关闭空值隐藏,请执行以下操作…

操作无法完成,因为文件已在Windows资源管理器中打开,如何解决?以及如何将哔哩哔哩下载好的视频导出到电脑中播放?— 以vivo手机为例

前言 想删除流氓软件的时候&#xff0c;提示操作无法完成&#xff0c;因为文件已在Windows资源管理器中打开&#xff0c;但打开任务管理器&#xff0c;似乎又没有符合的正在执行的程序&#xff0c;更别说打开让人看到头疼的资源监视器了&#xff0c;本文将用一招解决如上问题 …

从一个main.cpp文件开始构建Qt项目【浅析】

目录 操作步骤 编译阶段 尝试运行 操作步骤 最初只有一个main.cpp文件。 然后在Qt的mingw命令行中进行以下操作&#xff1a; 这样就会在main.cpp的路径下生成一个.pro文件&#xff1a; 用QC打开后是这个样子&#xff1a; 所以在这里 qmake -project 的作用就是生成一个.…

【开源】基于JAVA语言的假日旅社管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统介绍2.2 QA 问答 三、系统展示四、核心代码4.1 查询民宿4.2 新增民宿评论4.3 查询民宿新闻4.4 新建民宿预订单4.5 查询我的民宿预订单 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的假日旅社…