Linux C语言基础 day10

目录

学习目标:

学习内容:

1.指针指向数组

1.1 指针与数组的关系

1.2 指针与一维数组关系实现

1.2.1 指针与一维数组的关系

1.2.2  指针指向一维整型数组作为函数参数传递

课外作业:


学习目标:

  • 一周掌握 C基础知识

学习内容:

1.指针指向数组

1.1 指针与数组的关系

        1. 一维数组的数组名,本质上是一个该数组的第一个元素的地址

                int arr[5]; arr &arr[0]

        2. 数组名是一个地址常量,不能被重新赋值,但是,数组名可以进行偏移

        3.  二维数组的数组名,从数值上来说也是一个该数组第一个元素的地址

                int arr[3][4]; arr <==> &arr[0]; arr[0] <==>&arr[0][0]; arr[1] <==>&arr[1][0]

1.2 指针与一维数组关系实现

1.2.1 指针与一维数组的关系

#include<stdio.h>int main(int argc, const char *argv[]){//定义一个一维数组int arr[] = {3,8,3,2,4};int len = sizeof(arr)/sizeof(arr[0]);    //求数组长度//定义指针指向一维数组int *ptr = arr;             //int *ptr = &arr[0];//数据输出方式1,从值的角度printf("数据元素分别是:");for(int i=0; i<len; i++){printf("%d\t", arr[i]);}printf("\n");//输出方式2:从数组名的角度printf("数据元素分别是:");for(int i=0; i<len; i++){printf("%d\t", *(arr+i) );}printf("\n");//输出方式3:从指针变量的角度printf("数据元素分别是:");for(int i=0; i<len; i++){printf("%d\t", *(ptr+i) );}printf("\n");//输出方式4:从指针的角度找值printf("数据元素分别是:");for(int i=0; i<len; i++){printf("%d\t", ptr[i]);}printf("\n");//输出方式5:从指针变量的角度printf("数据元素分别是:");for(int i=0; i<len; i++){printf("%d\t", *(ptr++));}printf("\n");return 0;}

1.2.2  指针指向一维整型数组作为函数参数传递

        当实参使用的是数组名进行传递时,本质上传递的是数组首元素的地址

        被调函数的形参可以是一个数组接收,也可以是一个指针变量接收

        虽然使用的是数组接收,但是,本质上也还是使用的是指针接收

例如:主函数中定义一个长度为8的数组,调用自定义函数完成输入、自定义函数完成输出、自定义函数求最大值、自定义函数完成数组的逆置。并对这些函数进行测试。要求,形参使用指针接收

#include <stdio.h>#define MAX 8// 函数声明void inputArray(int *arr, int length);void outputArray(const int *arr, int length);int findMaxValue(const int *arr, int length);void reverseArray(int *arr, int length);int main() {int arr[MAX];printf("请输入%d个整数:\n", MAX);inputArray(arr, MAX); // 输入数组printf("输入的数组为:\n");outputArray(arr, MAX); // 输出数组int maxVal = findMaxValue(arr, MAX); // 求最大值printf("数组中的最大值是:%d\n", maxVal);reverseArray(arr, MAX); // 逆置数组printf("逆置后的数组为:\n");outputArray(arr, MAX); // 输出逆置后的数组return 0;}// 输入数组元素void inputArray(int *arr, int length) {for (int i = 0; i < length; i++) {scanf("%d", arr + i);}}// 输出数组元素void outputArray(const int *arr, int length) {for (int i = 0; i < length; i++) {printf("%d ", arr[i]);}printf("\n");}// 求数组的最大值int findMaxValue(const int *arr, int length) {int max = arr[0];for (int i = 1; i < length; i++) {if (arr[i] > max) {max = arr[i];}}return max;}// 逆置数组void reverseArray(int *arr, int length) {for (int i = 0; i < length / 2; i++) {int temp = arr[i];arr[i] = arr[length - 1 - i];arr[length - 1 - i] = temp;}}


课外作业:

1. 自定义函数(my_strlen)实现strlen函数的功能

解析:

#include<stdio.h>
#include<string.h>
#define MAX 50
void my_strlen(char *a,int count){printf("请输入字符串:");gets(a);while (*a++){count++;}printf("长度为%d\n",count);
}int main(int argc, char const *argv[])
{char str[MAX]="";char s[MAX]="";int count=0;my_strlen(str,count);return 0;
}


 

2. 自定义函数(my_strcpy)实现strcpy函数的功能

解析:

#include<stdio.h>
#include<string.h>
#define MAX 50void my_strcpy(char *a,const char *b){while (*b != '\0'){*a=*b;        //将b里的值写入aa++;b++;}*a='\0';      //‘\0’写入a}
int main(int argc, char const *argv[])
{char str[MAX]="";char s[MAX]="";int count=0;printf("请输入第一个字符串内容");gets(str);printf("请输入第二个字符串内容");gets(s);my_strcpy(str,s);        //调用函数printf("str=%s\t,s=%s\t",str,s);return 0;
}


 

3.自定义函数(my_strcmp)实现strcmp函数的功能

解析:

#include<stdio.h>
#include<string.h>
#define MAX 50int my_strcmp(const  char *a,const char *b){
int len = sizeof(*b)/sizeof(char);while (*a  && *b){a++;b++;}return (char) *a -(char) *b;}
int main(int argc, char const *argv[])
{char str[MAX]="";char s[MAX]="";int count=0;printf("请输入第一个字符串内容");gets(str);printf("请输入第二个字符串内容");gets(s);int sum = my_strcmp(str,s);if(sum ==0){printf("相等");}else if (sum <0){printf("第二个字符串内容大");}else{printf("第一个字符串内容大");}return 0;
}

4.自定义函数(my_strcat)实现strcat函数的功能

解析:

#include<stdio.h>
#include<string.h>
#define MAX 50void my_strcat(char *a,const char *b){while (*a != '\0'){a++;}while (*b != '\0'){*a++ = *b++;}*a = '\0';
}
int main(int argc, char const *argv[])
{char str[MAX]="";char s[MAX]="";int count=0;printf("请输入第一个字符串内容");gets(str);printf("请输入第二个字符串内容");gets(s);my_strcat(str,s);printf("str=%s\n",str);return 0;
}

5.自定义函数(my_strstr)实现求src字符串中是否包含子串dest字符串

解析:

#include <stdio.h>// 自定义函数 my_strstr,实现 strstr 函数的功能
char  my_strstr(const char *src, const char *dest) {int src_len = 0, dest_len = 0;const char *src_ptr, *dest_ptr;// 计算 dest 字符串的长度while (dest[dest_len] != '\0') {dest_len++;}// 遍历 src 字符串for (src_ptr = src; *src_ptr != '\0'; src_ptr++) {// 如果当前字符匹配 dest 的第一个字符if (*src_ptr == *dest) {int i = 0;// 检查 dest 是否完全匹配for (i = 0; i < dest_len; i++) {// 如果字符不匹配或到达 src 的末尾,则跳出循环if (src_ptr[i] != dest[i] || src_ptr[i] == '\0') {break;}}// 如果完全匹配,返回1if (i == dest_len) {return 1;}}}// 如果没有找到 dest,返回 0return 0;
}int main() {char str[50]="";char s[50]="";printf("请输入第一个字符串内容");gets(str);printf("请输入第二个字符串内容");gets(s);// 使用自定义函数查找子串char found = my_strstr(str, s);if (found != 0) {printf("找到子串\n" );} else {printf("子串未找到。\n");}return 0;
}

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

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

相关文章

卡码网语言基础课 | 10. 平均绩点

目录 1、问题描述2、知识点① 字符串格式化输出② 保留小数 3、代码 1、问题描述 题目描述&#xff1a;每门课的成绩分为A、B、C、D、F五个等级&#xff0c;为了计算平均绩点&#xff0c;规定A、B、C、D、F分别代表4分、3分、2分、1分、0分。 输入描述&#xff1a;有多组测试…

RandomAccessFile详细总结

RandomAccessFile 是 Java 中一个非常特殊的类&#xff0c;它既可以用来读取文件&#xff0c;也可以用来写入文件。与其他 IO 类&#xff08;如 FileInputStream 和 FileOutputStream&#xff09;不同&#xff0c;RandomAccessFile 允许您跳转到文件的任何位置&#xff0c;从那…

【全面介绍Pip换源】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

CV11_模型部署pytorch转ONNX

如果自己的模型中的一些算子&#xff0c;ONNX内部没有&#xff0c;那么需要自己去实现。 1.1 配置环境 安装ONNX pip install onnx -i https://pypi.tuna.tsinghua.edu.cn/simple 安装推理引擎ONNX Runtime pip install onnxruntime -i https://pypi.tuna.tsinghua.edu.cn/si…

基于Java的斗地主游戏案例开发(做牌、洗牌、发牌、看牌

package Game;import java.util.ArrayList; import java.util.Collections;public class PokerGame01 {//牌盒//♥3 ♣3static ArrayList<String> list new ArrayList<>();//静态代码块//特点&#xff1a;随着类的加载而在加载的&#xff0c;而且只执行一次。stat…

底软驱动 | C++内存相关

文章目录 C内存相关C内存分区C对象的成员函数存放在内存哪里 堆和栈的区别堆和栈的访问效率“野指针”有了malloc/free为什么还要new/deletealloca内存崩溃C内存泄漏的几种情况内存对齐柔性数组参考推荐阅读 C内存相关 本篇介绍了 C 内存相关的知识。 C内存分区 在C中&#…

力扣第八题——字符串转换整数

题目介绍 请你来实现一个 myAtoi(string s) 函数&#xff0c;使其能将字符串转换成一个 32 位有符号整数。 函数 myAtoi(string s) 的算法如下&#xff1a; 空格&#xff1a;读入字符串并丢弃无用的前导空格&#xff08;" "&#xff09;符号&#xff1a;检查下一个字…

TCP重传、滑动窗口、流量控制、拥塞控制机制

目录 1、TCP重传机制超时重传快速重传 2、滑动窗口3、流量控制4、拥塞控制1、慢启动2、拥塞避免3、拥塞发生 1、TCP重传机制 TCP 针对数据包丢失的情况&#xff0c;会用重传机制解决。 超时重传 就是在发送数据时&#xff0c;设定一个定时器&#xff0c;当超过指定的时间还没…

Ctrl+C、Ctrl+V、Ctrl+X 和 Ctrl+Z 的起源

注&#xff1a;机翻&#xff0c;未校对。 The Origins of CtrlC, CtrlV, CtrlX, and CtrlZ Explained We use them dozens of times a day: The CtrlZ, CtrlX, CtrlC, and CtrlV shortcuts that trigger Undo, Cut, Copy, and Paste. But where did they come from, and why do…

文件上传接口

文章目录 开发前端接口 开发前端接口 首先这个前端的文件上传组件使用了,前端组件 首先这个接口不是一般的接口,这个接口可以提取出来,之后那里使用了,就直接放到哪里 所以这是一个万能文件上传接口 写完之后选择 头像组件 在图库中添加组件 写前端组件之后,写了前端的组件…

Bootstrap 5 加载效果

Bootstrap 5 加载效果 Bootstrap 5 是一个流行的前端框架,它提供了丰富的组件和工具,用于快速开发响应式和移动优先的网页。在本文中,我们将探讨 Bootstrap 5 中的加载效果,包括如何实现它们以及它们在网页设计中的作用。 什么是加载效果? 加载效果是在网页或应用程序中…

k8s集群创建devops项目一直等待状态,没有发现host

问题分析&#xff1a; kubesphere在帮我们自动化创建一些智能自动化的额时候难免会发生一些小错误&#xff0c;devops-jenkins是一个部署也会生成一个容器组即pod&#xff0c;容器组的容器服务端口是 targetPort&#xff0c;容器组对外暴露的端口是port&#xff0c;拿devops-c…

[深度学习]基于yolov10+streamlit目标检测演示系统设计

YOLOv10结合Streamlit构建的目标检测系统&#xff0c;不仅极大地增强了实时目标识别的能力&#xff0c;还通过其直观的用户界面实现了对图片、视频乃至摄像头输入的无缝支持。该系统利用YOLOv10的高效检测算法&#xff0c;能够快速准确地识别图像中的多个对象&#xff0c;并标注…

Billu_b0x靶机

信息收集 使用arp-scan 生成网络接口地址来查看ip 输入命令&#xff1a; arp-scan -l 可以查看到我们的目标ip为192.168.187.153 nmap扫描端口开放 输入命令&#xff1a; nmap -min-rate 10000 -p- 192.168.187.153 可以看到开放2个端口 nmap扫描端口信息 输入命令&…

配置PYTHONPATH环境变量

配置PYTHONPATH环境变量 前言Win系统临时配置永久配置 Linux系统临时配置永久配置 前言 在运行py脚本时不仅需要import官方库&#xff0c;经常会import自己编写的脚本&#xff0c;但此时会出现模块找不到的如下报错。解决方法是配置PYTHONPATH&#xff0c;下文介绍Win系统和Li…

禹神:一小时快速上手Electron,前端Electron开发教程,笔记。一篇文章入门Electron

一、Electron是什么 简单的一句话&#xff0c;就是用htmlcssjsnodejs&#xff08;Native Api&#xff09;做兼容多个系统&#xff08;Windows、Linux、Mac&#xff09;的软件。 官网解释如下(有点像绕口令)&#xff1a; Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面…

Resources.Load返回null

Resources.Load返回null 在unity中Resources.Load从Assets下的任意Resources目录下读取资源&#xff0c;比如从Assets\Resources下读取Cube&#xff08;预制体&#xff09;&#xff0c;当然也可以读取其他资源 代码为 GameObject prefab Resources.Load<GameObject>(…

微软Edge浏览器深度解析:性能、安全性与特色功能全面评测

一、引言 自Windows 10操作系统推出以来&#xff0c;微软Edge浏览器作为默认的网页浏览器&#xff0c;凭借其现代化的设计和出色的性能表现&#xff0c;逐渐获得了用户的认可。本文旨在对Edge浏览器进行深入分析&#xff0c;探讨其在多个方面的表现。 二、界面与操作体验 界面…

在 PostgreSQL 里如何处理数据的存储优化和数据库备份的效率平衡?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 里如何处理数据的存储优化和数据库备份的效率平衡&#xff1f;一、数据存储优化&#x…

HTML表格表单及框架标签

一.表格标签 1.<table></table> 创建表格 2.<caption></caption> 表格的标题 3.<tr></tr>Table Row&#xff08;表格行&#xff09; 4.<td></td>Table Data&#xff08;表格数据&#xff09;其中有属性rowspan"2&quo…