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;推动…

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

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

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

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

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

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

【论文分享】Graviton: Trusted Execution Environments on GPUs 2018’OSDI

目录 AbstractIntroductioncontributions BackgroundGPUSoftware stackHardwareContext and channel managementCommand submissionProgramming modelInitializationMemory allocationHost-GPU transfersKernel dispatch Sharing Intel SGX Threat ModelOverviewGraviton Archi…

设计模式笔记01(java版)

文章目录 设计模式概述学习设计模式的必要性设计模式分类创建型模式结构型模式行为型模式 UML类图概述类图的作用类图表示法类的表示方式类与类之间关系的表示方式1&#xff0c;单向关联2&#xff0c;双向关联3&#xff0c;自关联聚合关系组合关系依赖关系继承关系实现关系 软件…

Pytorch 张量运算函数(补充)

mean() mean()函数是进行张量均值计算的函数,常用参数可以设置参数dim来进行对应维度的均值计算 以下是使用一个二维张量进行演示的例子 import numpy as np import torch device torch.device(mps if torch.backends.mps.is_available() else cpu) print(device ) data1 …

C++ | Leetcode C++题解之第367题有效的完全平方数

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isPerfectSquare(int num) {double x0 num;while (true) {double x1 (x0 num / x0) / 2;if (x0 - x1 < 1e-6) {break;}x0 x1;}int x (int) x0;return x * x num;} };

linux系统,ubuntu安装英伟达NVIDIA4090显卡驱动

文章目录 前言下载英伟达NVIDIA官方驱动安装NVIDIA驱动远程安装关闭交互界面设置权限&#xff08;自己确认版本号5&#xff09;安装&#xff08;自己确认版本号5&#xff09;打开交互界面&#xff0c;并重启系统验证是否安装成功 异常处理问题1问题2问题3&#xff08;可能没解决…

python小游戏——躲避球(可当课设)

游戏简介&#xff1a; 没有美术&#xff0c;画面简洁&#xff08;懒得做&#xff09;。玩家控制小球躲避敌人&#xff08;上下左右&#xff0c;闪避&#xff09;&#xff0c;敌人体积越大速度越慢&#xff0c;随机生成道具球&#xff08;目前只有生命球&#xff09;&#xff0…