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.rhkb.cn/news/377795.html

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

相关文章

部署k8s 1.28.9版本

继上篇通过vagrant与virtualBox实现虚拟机的安装。笔者已经将原有的vmware版本的虚拟机卸载掉了。这个场景下&#xff0c;需要重新安装k8s 相关组件。由于之前写的一篇文章本身也没有截图。只有命令。所以趁着现在。写一篇&#xff0c;完整版带截图的步骤。现在行业这么卷。离…

PyMongo Sort 操作:提升你的数据查询效率

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

极狐Gitlab使用(2)

目录 1. Gitlab命令行修改管理员密码 2. Gitlab服务管理 3. 公司的开发代码提交处理流程 4. Gitlab 备份与恢复 数据备份 测试数据恢复 5. 邮箱配置 1. Gitlab命令行修改管理员密码 [roottty01 ~]# gitlab-rails console -e production # 启动GitLab的Rails控制…

notepad++中文出现异体汉字,怎么改正

notepad显示异体字&#xff0c;如何恢复&#xff1f; 比如 “门” 和 “直接” 的"直"字&#xff0c;显示成了 方法 修改字体&#xff0c; 菜单栏选择 Settings(设置&#xff09;&#xff0c;Style Configurator…&#xff08;语言格式设置…&#xff09;&#xf…

css - - - - - 去除图片默认的白色背景(混合模式 mix-blend-mode)

去除图片默认的白色背景&#xff08;mix-blend-mode&#xff09; 1. 需求描述2. 原图展示3. 原代码展示4. 使用混合模式(mix-blend-mode)5.修改后效果 1. 需求描述 图片含有白色地图&#xff0c;想要将其去掉 2. 原图展示 3. 原代码展示 <div><img src*****/> &…

最新版康泰克完整版- Kontakt v7.10.5 for Win和Mac,支持m芯片和intel,有入库工具

一。世界最受欢迎的采样器的新篇章 Native Instruments Kontakt是采样器领域的标准&#xff0c;您将获得高质量的滤波器&#xff0c;在这里您将找到经典的模拟电路和最现代的滤波器。每一个都可以根据您的口味进行定制&#xff0c;并且由于它&#xff0c;您可以获得前所未有的声…

【持续集成_05课_Linux部署SonarQube及结合开发项目部署】

一、Linux下安装SonarQube 1、安装sonarQube 前置条件&#xff1a;sonarQube不能使用root账号进行启动&#xff0c;所以需要创建普通用户及 其用户组 1&#xff09;创建组 2&#xff09;添加用户、组名、密码 3&#xff09;CMD上传qube文件-不能传到home路径下哦 4&#xff09…

设计模式的七大原则

1.单一职责原则 单一职责原则(Single responsibility principle)&#xff0c;即一个类应该只负责一项职责。如类A负责两个不同职责&#xff1a;职责1&#xff0c;职责2。当职责1需求变更而改变A时&#xff0c;可能造成职责2执行错误&#xff0c;所以需要将类A的粒度分解为A1、…

Mac系统能装虚拟机吗 Mac装双系统虚拟机详细教程 macos可以用虚拟机装windows吗

随着科技的进步和用户需求的多样化&#xff0c;越来越多的用户希望在一台设备上运行多个操作系统。特别是对于Mac用户来说&#xff0c;安装虚拟机或者双系统已成为常见需求。这不仅可以满足用户在不同操作系统工作的需求&#xff0c;也可以让开发人员在不同的操作系统上进行测试…

基于 jenkins 部署接口自动化测试项目!

引言 在现代软件开发过程中&#xff0c;自动化测试是保证代码质量的关键环节。通过自动化测试&#xff0c;可以快速发现和修复代码中的问题&#xff0c;从而提高开发效率和产品质量。而 Jenkins 作为一款开源的持续集成工具&#xff0c;可以帮助我们实现自动化测试的自动化部署…

电脑远程开关机

1. 远程开机 参考&#xff1a;https://post.smzdm.com/p/664774/ 1.1 Wake On LAN - 局域网唤醒&#xff08;需要主板支持&#xff0c;一般都支持&#xff09; 要使用远程唤醒&#xff0c;有几种方式&#xff1a;使用类似向日葵开机棒&#xff08;很贵&#xff09;、公网ip&…

嵌入式全栈设计思路:STM32G4+ChibiOS+FreeRTOS+PID控制+PFC算法构建高效智能电源管理系统(附代码示例)

智能电源管理系统是一个基于STM32G4微控制器的高性能数字电源控制解决方案。本项目旨在设计一个功能全面、高效稳定的电源管理系统,可广泛应用于工业控制、新能源、通信设备等领域。 1.1 系统主要特点 高精度数字电源控制&#xff1a;利用STM32G4的高性能ADC和定时器,实现精确…

C#小结:未能找到类型或命名空间名“xxx”(是否缺少 using 指令或程序集引用?)

方案一&#xff1a;移除这些失效的引用&#xff0c;下载对应版本的dll&#xff0c;重新添加引用 方案二&#xff1a;项目右键属性-调整目标框架版本&#xff08;一般是降低版本&#xff09; 方案三&#xff1a;调整编译顺序&#xff1a; 项目A&#xff1a;引用1、引用2 &…

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

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

mysql-connector-java 8.0.33 反序列化漏洞

前言 经过与oracle官方沟通&#xff0c;在最新的mysql-connector-j 9.0.0里不存在这个问题&#xff0c;所以他们不认为这是个漏洞 不过确实&#xff0c;mysql-connector-java这个分支已经迁移到mysql-connector-j了&#xff0c;当时没注意&#xff0c;交的时候只注意了mysql-c…

新版本 idea 创建不了 spring boot 2 【没有jkd8选项】

创建新项目 将地址换成如下 https://start.aliyun.com/

C语言课程回顾:十、C语言之 指针

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 C语言之 指针 10 指针10.1 地址指针的基本概念10.2 变量的指针和指向变量的指针变量10.2.1 定义一个指针变量10.2.2 指针变量的引用10.2.3 指针变量作为函数参数10.2.4 指针变…

Elasticsearch集群搭建

集群概念 在单台 ES 服务器上&#xff0c;随着一个索引内数据的增多&#xff0c;会产生存储、效 率、安全等问题。 因此引入集群 我们需要将索引拆分成多份&#xff0c;分别放入不同的服务器中&#xff0c;此时这几台服务器维护了同一个索引&#xff0c;我们称这几台服务器为一…

每日一练@

目录 题目1.关于AOP错误的是&#xff1f;2.关于以下代码的说明&#xff0c;正确的是&#xff08; &#xff09;3.以下类型为Final类型的为&#xff08;&#xff09;4.以下说法哪个是正确的&#xff08;&#xff09; 题目 选自牛客网 1.关于AOP错误的是&#xff1f; A.AOP将散…

C++的缺省参数、函数重载和引用

缺省参数 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时&#xff0c;如果没有指定实参 则采⽤该形参的缺省值&#xff0c;否则使⽤指定的实参&#xff0c;缺省参数分为全缺省和半缺省参数。(有些地⽅把 缺省参数也叫默认参数)&#xff0c;要注意的是…