嵌入式第十二天!(指针数组、指针和二维数组的关系、二级指针)

2024-01-29 19:36

本文主要是介绍嵌入式第十二天!(指针数组、指针和二维数组的关系、二级指针),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 指针数组:

int *a[5];
char *str[5];

        指针数组主要用来操作字符串数组,通常将指针数组的每个元素存放字符串的首地址实现对多个字符串的操作。

        二维数组主要用来存储字符串数组,通过每行存储一个字符串,多行存储多个字符串所组成的数组

2. 指针和二维数组的关系:

int a[2][3] = {0};
int *p = NULL;
int (*q)[3] = NULL;p = &a[0][0];
p = a[0];
p = *a;
q = a;

        二维数组数组名是指向数组第一行元素数组指针

        访问二维数组第m行第n列的方式:

    a[m][n]*(a[m]+n)*(*(a+m)+n)*(p+m*n+n)*(*(q+m)+n)*(q[m]+n)q[m][n]

        二维数组传参:

int a[2][3] = {0};
int Fun(int (*parray)[3], int len);char str[5][32] = {0};
int Fun(char (*pstr)[32], int len);

3. 二级指针:

        1. 指针数组传参时:

int *a[5] = {NULL};    //a是int **型
char *pstr[5] = {"hello", "world", "how", "are", "you"};  //str是char **型int Fun(char **ppstr, int len);

作业:

        1. 现有二维数组 char str[5][32] = {"hello", "world", "how", "are", "you"};

                封装函数实现对所有字符串的排序

                封装函数实现对所有字符串的打印

#include <stdio.h>
#include <string.h>int InputStr(char (*pstr)[32], int len)
{int i = 0;for(i = 0; i < len; i++){gets(pstr[i]);}return 0;
}int SortStr(char (*pstr)[32], int len)
{int i = 0;int j = 0;char tmp[32] = {0};for(j = 0; j < len-1; j++){for(i = 0; i < len-1-j; i++){if(strcmp(pstr[i], pstr[i+1]) > 0){strcpy(tmp, pstr[i]);strcpy(pstr[i], pstr[i+1]);strcpy(pstr[i+1], tmp);}}}return 0;
}int OutputStr(char (*pstr)[32], int len)
{int i = 0;for(i = 0; i < len; i++){printf("%s\n",pstr[i]);}return 0;
}int main(void)
{char str[5][32] = {0};InputStr(str,5);SortStr(str,5);printf("==================\n");OutputStr(str,5);return 0;
}

        2. 现有指针数组 char *pstr[5] = {"hello", "world", "how", "are", "you"};

                封装函数实现对所有字符串的排序

                封装函数实现对所有字符串的打印

#include <stdio.h>
#include <string.h>int SortStr(char **pstr, int len)
{int i = 0;int j = 0;char *tmp = NULL;for(j = 0; j < len-1; j++){for(i = 0; i < len-1-j; i++){if(strcmp(pstr[i], pstr[i+1]) > 0){tmp = pstr[i];pstr[i] = pstr[i+1];pstr[i+1] = tmp;}}}return 0;
}int OutputStr(char **pstr, int len)
{int i = 0;for(i = 0; i < len; i++){printf("%s\n",pstr[i]);}return 0;
}int main(void)
{char *str[5] = {"Hello", "World", "How", "Are", "You"};SortStr(str,5);OutputStr(str,5);return 0;
}

这篇关于嵌入式第十二天!(指针数组、指针和二维数组的关系、二级指针)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/657962

相关文章

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

java中新生代和老生代的关系说明

《java中新生代和老生代的关系说明》:本文主要介绍java中新生代和老生代的关系说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、内存区域划分新生代老年代二、对象生命周期与晋升流程三、新生代与老年代的协作机制1. 跨代引用处理2. 动态年龄判定3. 空间分

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

Java空指针异常NullPointerException的原因与解决方案

《Java空指针异常NullPointerException的原因与解决方案》在Java开发中,NullPointerException(空指针异常)是最常见的运行时异常之一,通常发生在程序尝试访问或... 目录一、空指针异常产生的原因1. 变量未初始化2. 对象引用被显式置为null3. 方法返回null

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序