C语言之数组指针2.0

news2025/1/11 10:21:24

在 C 语言中,数组指针是一种特殊的指针类型,它是一个指向数组的指针。其声明形式为:

<数据类型> (*<指针变量名>)[<数组长度>];

例如,下面声明了一个指向整型数组的指针变量 arrPtr

int (*arrPtr)[10];

        这个数组指针变量 arrPtr 可以指向一个已有的数组。

        数组指针可以用来进行数组的访问。我们可以使用指针访问数组元素,也可以将指针作为函数参数传递来实现数组的传递。

下面是一些使用数组指针的示例代码:

        1.        使用指针访问数组元素:

int arr[3][2] = { {1, 2}, {3, 4}, {5, 6} };

int (*arrPtr)[2] = arr; // 数组指针指向数组的第一行

printf("%d\n", arrPtr[1][0]); // 输出第二行第一列的元素 3

        在这个例子中,数组 arr 是一个 3 行 2 列的二维数组,然后定义了一个数组指针 arrPtr,将其指向数组 arr 的第一行。

        使用指针访问数组元素的方式是 arrPtr [ i ] [ j ],其中 i j 分别表示要访问的行和列。

        2.        将指针作为函数参数传递:

void printArr(int (*arrPtr)[2], int n) {
    for (int i = 0; i < n; i++) {
        printf("%d %d\n", arrPtr[i][0], arrPtr[i][1]);
    }
}

int main() {
    int arr[3][2] = { {1, 2}, {3, 4}, {5, 6} };
    int (*arrPtr)[2] = arr;
    printArr(arrPtr, 3); // 传递数组指针和数组长度
    return 0;
}

        在这个例子中,定义了一个名为 printArr 的函数,其参数 arrPtr 是一个数组指针,代表一个二维整型数组,n 是该数组的长度。

        在 main 函数中,定义了一个二维数组 arr 和一个数组指针 arrPtr,并将其传递给函数 printArr,函数内部可以使用指针访问数组元素,实现数组的遍历与输出。

下面我们来看看“几道”例题:

题目1:编写自定义函数int my_strlen(char s[]); 检测字符串s的长度

要求:不使用string.h中的标准库函数strlen。

例子:

        输入:

        abc

        输出:

        3

这道题可以先这样,再那样,最后就得出了结果。(bushi)

先上代码!

#include <stdio.h>

int my_strlen( char s[] )
{
	int i,n=0;
	for(i=0;;i++)
	{
		if(s[i]=='\0')
            break;
		n++;	
	}

	return n;
}

int main( ) 
{ 
    char s[100];
    gets(s);
    printf("%d\n",my_strlen(s) );
} 

分析:

        代码中定义了一个名为 my_strlen 的函数,该函数的参数是一个字符数组(字符串)。

        函数体中使用循环逐个遍历字符,当遇到字符串的结束符 ‘\0’ 时,退出循环。

        循环的计数器 i 就是字符串的长度,最后将其作为函数的返回值。

最后,输出结果如下图:

 

题目2:编写自定义函数char *my_strcpy(char s1[],char s2[]);

要求:将字符串s2复制到s1,返回值为s1(不使用string.h中的标准库函数)

例子:

        输入:

        how are you?

        输出:

        how are you?

先上代码!

#include<stdio.h>

char *my_strcpy(char s1[],char s2[])
{
	int i=0;
	while (s2[i]!='\0')
	{
		s1[i]=s2[i];
		i++;
	}
	s1[i]='\0';

	return s1;
}

int main() 
{ 
    char s[100] , t[100];
    gets(s);
    printf("%s\n",my_strcpy(t,s) );
}

分析:       

        这道题要求实现一个自定义函数 my_strcpy,用于将一个字符串 s2 复制到另一个字符串 s1 中,并返回 s1。

        函数的参数s1和s2都是字符数组(也就是字符串),因此可以通过遍历数组逐个复制字符的方式来实现字符串的复制操作。

        在函数体中,使用循环逐个遍历字符串 s2 中的字符,并逐个复制到字符串 s1 中。循环终止的条件是遍历到字符串结束符 ‘\0’。最后,将字符串结束符添加到 s1 的末尾,并返回 s1。

最后,输出结果如下图:

 

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

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

相关文章

数据等级划分

数据大致可以分为定性数据与定量数据&#xff0c;但细分可以分为四类&#xff1a;定类数据、定序数据、定距数据、定比数据 处理数据的流程&#xff1a; 参考&#xff1a; 特征工程入门与实践

如何使用ChatGPT提升自己的“码”力?

如何使用chatGPT提升自己的"码"力? 代码评审(CodeReview)代码优化代码释义提供解决方案代码生成设计模式和架构建议学习新知识总结 ChatGPT是什么&#xff0c;我就不用再多介绍了吧&#xff01;相信大家已经看到了它在文本领域所展现出来的实力&#xff0c;虽然目前…

PAT A1152 Google Recruitment

1152 Google Recruitment 分数 20 作者 陈越 单位 浙江大学 In July 2004, Google posted on a giant billboard along Highway 101 in Silicon Valley (shown in the picture below) for recruitment. The content is super-simple, a URL consisting of the first 10-dig…

2023商家外卖数据

商家列表 外卖商品销量 shop_channel varchar(20) DEFAULT NULL, shop_system varchar(20) DEFAULT NULL, shop_system_no varchar(50) DEFAULT NULL, shop_platform varchar(20) DEFAULT NULL, shop_id varchar(50) NOT NULL, shop_id_str varchar(50) NO…

ChatGPT自动生成思维导图

&#x1f34f;&#x1f350;&#x1f34a;&#x1f351;&#x1f352;&#x1f353;&#x1fad0;&#x1f951;&#x1f34b;&#x1f349; ChatGPT自动生成思维导图 文章目录 &#x1f350;问题引入&#x1f350;具体操作markmapXmind &#x1f433;结语 &#x1f…

【Web】JWT(JSON Web Token)验证是什么?和SWT,SMAL的区别

JWT是什么&#xff1f; JWT&#xff08;JSON Web Token&#xff09;是一种轻量级的安全传输方式&#xff0c;可以用于在不同的系统之间传递安全可靠的信息&#xff0c;例如用户身份验证、授权和信息交换等。JWT采用JSON格式对信息进行编码和传输&#xff0c;用于在各方之间以 …

SpringCloud:分布式缓存之Redis持久化

Redis有两种持久化方案&#xff1a; RDB持久化AOF持久化 1.RDB持久化 RDB全称Redis Database Backup file&#xff08;Redis数据备份文件&#xff09;&#xff0c;也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后&#xff0c;…

如何安装389目录服务器作为CentOS 8 / RHEL 8机器的LDAP服务器?

LDAP&#xff08;轻量级目录访问协议&#xff09;是一种用于访问和维护分布式目录服务的开放标准协议。 389目录服务器是一个功能强大、高性能的LDAP服务器&#xff0c;它可以用于存储和管理用户、组和其他网络对象的身份验证和授权信息。本文将详细介绍如何在CentOS 8 / RHEL…

学生成绩管理系统

基于springboot vue实现的学生成绩管理系统 主要模块&#xff1a; 1&#xff09;学生模块&#xff1a;我的成绩、成绩统计、申述管理、修改密码 2&#xff09;教师模块&#xff1a;任务管理、对学生班级任务安排、班级学生的成绩查看、申述管理 3&#xff09;管理员模块&…

(可直接使用)在线语音识别APP+阿里云平台+Android Studio 开发项目

目录 所以需要下载软件 (1)Android Studio (2)夜神模拟器 1&#xff1a;在阿里云平台中&#xff0c;登录账号&#xff0c;选择控制台&#xff0c;搜索 智能语音交互 2&#xff1a;智能语音交互 界面 3:创建项目 4&#xff1a;选择项目类别 可以选择 语音识别语…

C++初识仿函数

C初识仿函数 &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容简单介绍了仿函数的概念 文章目录 C初识仿函数…

计算机组成原理-中央处理器-CPU指令和数据执行过程

目录 一、CPU的功能和基本架构 二、指令cpu执行过程 指令周期​编辑 各周期执行过程 指令执行方案 三、数据通路 3.1 cpu内部单总线 3.1.1 寄存器之间传送 3.1.2 主存与cpu之间数据传送 3.1.3 执行算术或逻辑运算的 3.2 cpu内部多总线 3.3 专用数据通路 一、CPU的功能和…

javascript基础九:说说Javascript中的继承?如何实现继承?

一、是什么 继承&#xff08;inheritance&#xff09;是面向对象软件技术当中的一个概念 如果一个类别B“继承自”另一个类别A&#xff0c;就把这个B称为“A的子类”&#xff0c;而把A称为“B的父类别”也可以称“A是B的超类” 继承的优点 继承可以使得子类具有父类别的各种属性…

[LeetCode周赛复盘] 第 105 场双周赛20230528

[LeetCode周赛复盘] 第 105 场双周赛20230528 一、本周周赛总结6395. 购买两块巧克力1. 题目描述2. 思路分析3. 代码实现 6394. 字符串中的额外字符1. 题目描述2. 思路分析3. 代码实现 6393. 一个小组的最大实力值1. 题目描述2. 思路分析3. 代码实现 6464. 最大公约数遍历1. 题…

性能测试需求分析有哪些?怎么做?

目录 性能测试必要性评估 常见性能测试关键评估项如下&#xff1a; 性能测试工具选型 性能测试需求分析 性能测试需求评审 性能测试需求分析与传统的功能测试需求有所不同&#xff0c;功能测试需求分析重点在于从用户层面分析被测对象的功能性、易用性等质量特性&#xff…

【Go语言从入门到实战】并发篇

Go语言从入门到实战 — 并发篇 协程 Thread vs Groutine 相比之下&#xff0c;协程的栈大小就小很多了&#xff0c;创建起来也会更快&#xff0c;也更节省系统资源。 一个 goroutine 的栈&#xff0c;和操作系统线程一样&#xff0c;会保存其活跃或挂起的函数调用的本地变量…

2023 年面向初学者的 5 大自由写作技巧

在这篇文章中&#xff0c;我们将讨论初学者的自由写作技巧 译自&#xff1a;https://jitendra.co/freelance-writing-tips-for-beginners/ 比较平易近人&#xff0c;在做独立站并且自己写原创时候可以参考下&#xff0c;面对的甲方爸爸不同而已 最初的兼职活动最终成为我生活中…

Docker下安装MySQL,PostgreSQL,SQL Server(包含离线和在线安装)

1 MySQL 1.1 离线安装 1.1.1 加载镜像 使用ftp工具将安装包上传至服务器最大目录下&#xff0c;这里以根目录为最大目录举例 键入加载镜像命令&#xff1a;docker load -i 镜像包名称 docker load -i mysql80.tar使用docker images命令查看已经加载的镜像&#xff0c;如上…

【利用ChatGPT学习英语口语(包括如何安装插件的详细教程)】

内容目录 一、插入ChatGPT语音播放插件1. 打开谷歌浏览器——右上角三点——更多工具——扩展程序2. 点击扩展程序三个横杠——打开chrome 应用商店3. 搜索Voice Control for ChatGPT——点击如下图第一个——添加至Chrome——添加扩展程序4. 成功安装&#xff0c;打开ChatGPT有…

【大数据hive】hive视图与物化视图使用详解

目录 一、hive中的视图 二、hive视图语法与操作 2.1 数据准备 2.2 创建视图 2.2.1 创建普通的视图 2.2.2 基于视图创建视图 2.3 查看视图定义 2.4 使用视图 2.5 删除视图 2.6 更改视图属性 2.7 更改视图定义 三、使用视图的好处 3.1 只将真实表中特定的列数据提…