C语言基础(十二)

指针的用法:

测试代码1:

#include "date.h"
#include <stdio.h>  // 函数声明,用于交换两个整数的值,通过指针传递  
void swap(int *a, int *b);  int main() {  int time = getTime();int nums[3] = {3, 1, 4}; // 定义一个包含3个整数的数组  int *p1 = &nums[0]; // 指向第一个元素的指针  int *p2 = &nums[1]; // 指向第二个元素的指针  int *p3 = &nums[2]; // 指向第三个元素的指针  // 比较并交换,以确保按从大到小排序  // 首先比较并交换 p1 和 p2 指向的值  if (*p1 < *p2) {  swap(p1, p2);  }  // 比较并交换 p1 和 p3 指向的值  if (*p1 < *p3) {  swap(p1, p3);  }  // 比较并交换 p2 和 p3 指向的值  if (*p2 < *p3) {  swap(p2, p3);  }  // 输出排序后的结果  printf("%d %d %d\n", *p1, *p2, *p3);  return 0;  
}  // 定义swap函数,用于交换两个整数的值  
void swap(int *a, int *b) {  int temp = *a;  *a = *b;  *b = temp;  
}

运行结果如下:

 

测试代码2:

#include "date.h"
#include <stdio.h>  int main() {  int time = getTime(); int arr[5] = {10, 20, 30, 40, 50}; // 定义一个包含5个整数的数组  int *ptr = arr; // 定义一个指针ptr,并将其初始化为指向数组的第一个元素  // 打印初始指针指向的元素的地址和值  printf("Initial pointer position:\n");  printf("Address: %p, Value: %d\n", (void *)ptr, *ptr);  // 遍历数组,同时打印每个元素的地址和值  for (int i = 0; i < 5; i++) {  // 打印当前元素的地址和值  printf("Address: %p, Value: %d\n", (void *)(ptr + i), *(ptr + i));  // 通过ptr + i计算和打印数组中每个元素的地址和值。// 通过指针算术访问数组中的元素,并没有改变指针的指向。}  // 递增ptr遍历数组,并打印出每个元素的地址和值。// 直接通过改变指针的指向遍历数组。printf("\nMoving the pointer and printing:\n");  for (ptr = arr; ptr < arr + 5; ptr++) {  printf("Address: %p, Value: %d\n", (void *)ptr, *ptr);  }  return 0;  
}

运行结果如下:

 

测试代码3:

#include "date.h" 
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <inttypes.h>
int main() {int time = getTime();int n;printf("请输入随机数的个数:");// 读取输入的随机数个数并存放到变量n中。scanf("%d", &n);// 动态分配一段内存,大小为n个整型变量大小,用于存储随机数。int *arr = (int *)malloc(n * sizeof(int));// 循环生成随机数并存放到arr数组中。for (int i = 0; i < n; i++) {arr[i] = rand() % 100; // 生成0-99之间的随机数}printf("打印每个元素的地址和值:\n");// 循环遍历arr数组中的每一个元素。for (int i = 0; i < n; i++) {// 打印当前元素的地址和值。printf("地址: %p, 值: %d\n", (void *)&arr[i], arr[i]);}printf("将地址转为二进制并打印:\n");for (int i = 0; i < n; i++) {// 将当前元素的地址强制转换为uintptr_t类型。uintptr_t addr = (uintptr_t)&arr[i];printf("地址: ");// 循环遍历地址的每一个二进制位。for (int j = sizeof(uintptr_t) * 8 - 1; j >= 0; j--) {// 按位输出地址的二进制。printf("%d", (addr >> j) & 1);}printf("\n");}// 释放动态分配的内存空间,防止内存泄漏。free(arr);return 0;
}

运行结果如下:

 

测试代码4:

#include "date.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//比较两个数的大小 
void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}
//选择排序 
void selectionSort(int *arr, int n) {for (int i = 0; i < n - 1; i++) {int minIndex = i;for (int j = i + 1; j < n; j++) {if (arr[j] < arr[minIndex]) {minIndex = j;}}if (minIndex != i) {swap(&arr[i], &arr[minIndex]);}}
}int main() {int times = getTime();int n;printf("Enter the number of integers to sort: ");scanf("%d", &n);//动态分配内存 int *arr = (int *)malloc(n * sizeof(int));// 用当前时间作为随机数种子,每次生成不同的随机数srand((unsigned int)time(NULL));printf("Generated random integers:\n");for (int i = 0; i < n; i++) {arr[i] = rand() % 100;  // 生成0到99之间的随机数printf("%d\n", arr[i]);}selectionSort(arr, n);printf("Sorted array:\n");// 遍历数组 for (int i = 0; i < n; i++) {printf("%d\n", arr[i]);}printf("Max value: %d\n", arr[n-1]);printf("Min value: %d\n", arr[0]);// 释放内存 free(arr);return 0;
}

运行结果如下:

 

测试代码5:

#include "date.h" 
#include <stdio.h>  
#include <stdlib.h>  
#include <time.h>  int main() {  int times = getTime();int n, i, j;  printf("请输入n的值以定义n x n的二维数组: ");  scanf("%d", &n);  // 动态分配二维数组  int **array = (int **)malloc(n * sizeof(int *));  for (i = 0; i < n; i++) {  array[i] = (int *)malloc(n * sizeof(int));  }  // 初始化随机数种子  srand(time(NULL));  // 填充二维数组  for (i = 0; i < n; i++) {  for (j = 0; j < n; j++) {  array[i][j] = rand() % 100; // 生成0到99的随机数  }  }  // 使用指针遍历并打印二维数组  for (i = 0; i < n; i++) {  for (j = 0; j < n; j++) {  printf("Address: %p, Value: %d\n", (void *)&array[i][j], array[i][j]);  }  }  // 释放内存  for (i = 0; i < n; i++) {  free(array[i]);  }  free(array);  return 0;  
}

运行结果如下:

 

 

 

 

 

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

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

相关文章

【Python】列表和元组

文章目录 概念创建列表访问下标通过下标来修改列表元素获取列表长度下标可以写成负数 切片操作省略后边界省略前边界省略前后边界带有步长的切片 遍历列表元素使用 for 循环使用 for 循环访问下标的方式使用 while 循环 新增元素在末尾新增在任意位置新增 查找元素判定元素是否…

ESP RainMaker OTA 自动签名功能的安全启动

【如果您之前有关注乐鑫的博客和新闻&#xff0c;那么应该对 ESP RainMaker 及其各项功能有所了解。如果不曾关注&#xff0c;建议先查看相关信息&#xff0c;知晓本文背景。】 在物联网系统的建构中&#xff0c;安全性是一项核心要素。乐鑫科技对系统安全给予了极高的重视。ES…

【C# 】使用List<实体类>

1. 使用List<实体类> 要在C#中使用List<EntityTemp>并实现查找数据输出&#xff0c;首先需要定义EntityTemp类&#xff0c;并创建一个List<EntityTemp>类型的列表。然后&#xff0c;你可以使用LINQ或其他方法来查找和输出数据。 假设EntityTemp类具有一个…

Transformer总结(三):组件介绍(位置编码,多头注意,残差连接,层归一化,基于位置的前馈网络)

文章目录 一、位置编码1.1 介绍1.2 简单探讨 二、多头注意力2.1 一般的多头注意力机制2.2 解码器中的掩码多头注意力机制&#xff08;Look-ahead Mask&#xff09; 三、残差连接四、层归一化4.1 对比不同的Normalization4.2 Batch Normalization的实现4.3 Layer Normalization的…

Variomes:支持基因组变异筛选的高召回率搜索引擎

《Bioinformatics》2022 Variomes&#xff1a; https://candy.hesge.ch/Variomes Source code&#xff1a; https://github.com/variomes/sibtm-variomes SynVar&#xff1a; https://goldorak.hesge.ch/synvar 文章摘要&#xff08;Abstract&#xff09; 动机&#xff08;Mot…

电子电气架构--- 智能汽车电子架构的核心诉求

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

8.23工作感悟 关于div样式

一、关于div 样式嵌套在el-dialog框里面,如何让div框里面的东西&#xff0c;例如图片的大小不超出dialog框 首先对div框进行一个自定义class ‌div的class属性‌用于为div元素指定一个或多个类名&#xff0c;类名之间用空格分隔。类名可以在CSS样式表中使用&#xff0c;以定…

统计Statistics | AnyLogic 帮助

统计Statistics | AnyLogic 帮助 统计对象计算一系列数据样本的统计信息&#xff08;平均值、最小值、最大值等&#xff09;&#xff0c;数据类型为double。 根据数据被视为离散还是连续&#xff0c;对象的工作原理不同。 演示模型&#xff1a; 观测次数的统计函数打开AnyL…

【经验】linux下cuda的更换

linux下cuda的更换 查看当前cuda和cudnn的版本 nvcc -Vcudnn版本 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2下载对应版本的cuda 查看驱动版本535.54.03 下载对应的cuda版本 版本查看https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.htm…

内存管理篇-02内存硬件电路和接口

1. 内存硬件实现机制 通过D触发器构建寄存器和内存的结构对比,这里主要先表达sram复杂&#xff0c;dram简单。 2. sram和ddr sdram结构图对比 主要是想对比sram和dram在和CPU连接过程的差异。sram需要的地址线较多&#xff0c;dram需要的较少&#xff0c;但是需要多次发送&…

货车制造5G智能工厂工业物联数字孪生平台,推进制造业数字化转型

货车制造5G智能工厂工业物联数字孪生平台&#xff0c;推进制造业数字化转型。随着5G技术的飞速发展与工业物联网的深度融合&#xff0c;货车制造5G智能工厂工业物联数字孪生平台应运而生&#xff0c;它不仅重新定义了生产模式&#xff0c;更以强大的技术驱动力&#xff0c;推动…

python 实现quantum entanglement量子纠缠算法

quantum entanglement量子纠缠算法介绍 量子纠缠&#xff08;Quantum Entanglement&#xff09;是量子力学中的一种奇特现象&#xff0c;它描述了两个或多个量子比特&#xff08;qubit&#xff09;之间的非经典、紧密的关联关系。这种关联关系在量子计算中起着关键作用&#x…

[数据集][目标检测]电力场景输电线防震锤检测数据集VOC+YOLO格式2721张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2721 标注数量(xml文件个数)&#xff1a;2721 标注数量(txt文件个数)&#xff1a;2721 标注…

Qt实现json数据的生成、解析、修改和删除

文章介绍 本文章主要介绍如何使用QT提供的json相关类来处理json数据&#xff0c;包括json数据的生成、解析、修改和json数据的删除。 json数据的增删改查 处理json数据时需要包含以下三个头文件 #include <QJsonDocument>#include <QJsonObject>#include <QJ…

react 路由创建与使用

1, 安装路由 npm i react-router-dom2&#xff0c;路由组件 createBrowserRouter // router/index.js import { createBrowserRouter } from "react-router-dom"import Home from ../page/home import New from ../page/newconst router createBrowserRouter([{pa…

武汉流星汇聚:亚马逊领跑全球电商,中国卖家迎来前所未有机遇窗口

在数字经济的浪潮中&#xff0c;亚马逊如同一艘巨轮&#xff0c;乘风破浪&#xff0c;引领着全球电商行业的航向。其每月近30亿次的访问量&#xff0c;不仅彰显了其在全球市场的强大影响力&#xff0c;更为中国卖家提供了前所未有的发展机遇。在这个平台上&#xff0c;中国卖家…

Unity URP Shader 修改深度让人物不再被地面遮挡

Unity URP Shader 修改深度让人物不再被地面遮挡 前言项目场景布置代码编写 前言 遇到一个小问题&#xff0c;人物总是被XY平面的地面遮挡&#xff0c;于是在Shader中改一下深度输出&#xff0c;这样地面再也不会挡住人物了。 项目 场景布置 将人物放到XY平面的后面 配置S…

搭建NFS服务器

搭建NFS服务器 记录linux下搭建使用NFS服务器的一般步骤&#xff0c;以ubuntu20.04和centos7.9操作进行记录。 1. 安装 NFS 服务器 运行以下命令安装 NFS 服务器。 # ubuntu下安装 sudo apt-get update sudo apt install nfs-kernel-server # 配置服务 sudo systemctl start …

第 13 章 JavaScript基本包装类型

第 13 章 JavaScript基本包装类型 1.基本包装类型概述 2.Boolean 类型 3.Number 类型 4.String 类型 为了便于操作基本类型值&#xff0c;ECMAScript 提供了 3 个特殊的引用类型&#xff1a;Boolean、Number和 String。这些类型与其他引用类型相似&#xff0c;但同时也具有…

EehCache介绍、应用场景和示例代码

EhCache 概述 EhCache 是一个高性能、轻量级的 Java 缓存库&#xff0c;广泛应用于各种 Java 应用中。EhCache 提供了丰富的功能&#xff0c;包括内存缓存、磁盘缓存、分布式缓存、持久化等&#xff0c;并且可以和 Spring 框架无缝集成。它支持基于内存和磁盘的混合存储&#…