嵌入式学习第十二天

8.数组指针和指针数组(2):

(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]

#include <stdio.h>int main(void)
{int a[2][3] = {1, 2, 3, 4, 5, 6};int *p = NULL;int (*q)[3] = a;p = a[0];printf("&a[0][0]:%p\n", &a[0][0]);printf("&a[0][1]:%p\n", &a[0][1]);printf("&a[0][2]:%p\n", &a[0][2]);printf("&a[1][0]:%p\n", &a[1][0]);printf("&a[1][1]:%p\n", &a[1][1]);printf("&a[1][2]:%p\n", &a[1][2]);printf("\n");printf("a[0]:%p\n", a[0]);printf("a[0]+1:%p\n", a[0]+1);printf("a[1]:%p\n", a[1]);printf("a[1]+1:%p\n", a[1]+1);printf("\n");printf("a:%p\n", a);printf("a+1:%p\n", a+1);printf("\n");printf("*(a[1]+1):%d\n", *(a[1]+1));printf("*(*(a+1)+1):%d\n", *(*(a+1)+1));printf("\n");printf("*(p+1*3+1):%d\n", *(p+1*3+1));printf("\n");printf("*(*(q+1)+1):%d\n", *(*(q+1)+1));printf("\n");printf("*(q[1]+1):%d\n", *(q[1]+1));printf("\n");printf("q[1][1]:%d\n", q[1][1]);return 0;
}

二维数组传参:
        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"};
           int Fun(char **ppstr, int len)

#include <stdio.h>int main(void)
{int Num = 0;int *p = NULL;int **q = NULL;p = &Num;q = &p;printf("&Num: %p\n", &Num);printf("&p: %p\n", &p);printf("&q: %p\n", &q);printf("\n");printf("q = %p\n", q);printf("p = %p\n", p);printf("Num = %d\n", Num);printf("\n");printf("*q = %p\n", *q);printf("*p = %d\n", *p);printf("\n");printf("**q = %d\n", **q);return 0;
}

作业:

1.现有二维数组 char str[5][32] = {"hello", "world", "how", "are", "you"};
            封装函数实现对所有字符串的排序
            封装函数实现对所有字符串的打印

2.现有指针数组 char *pstr[5] = {"hello", "world", "how", "are", "you"};
            封装函数实现对所有字符串的排序
            封装函数实现对所有字符串的打印 
 

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

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

相关文章

Git(7)之提交消息模板

Git基础之提交消息模板 Author&#xff1a;onceday date&#xff1a;2024年1月26日 满满长路有人对你微笑过嘛… 全系列文章可查看专栏: Git使用记录_Once_day的博客-CSDN博客 文章目录 Git基础之提交消息模板1. 设置提交信息1.1 设置用户名和邮箱信息1.2 设置默认编辑器1.3…

Nodejs前端学习Day3_准备工作

妈的&#xff0c;这几天真tm冷&#xff0c;前天上午还下了一整天的雪&#xff0c;大雪 文章目录 前言一、Node.js简介1.1何为1.2有什么 二、Node.js可以做什么三、学习路线四、下载nodejs4.1小坑记录4.2LTS和Current版本的不同 五、什么是终端六、在nodejs中执行js代码七、powe…

Kubernetes(K8S)各种攻击方法

1. 准备工作 1.1. metarget使用 项目地址(教程):https://github.com/Metarget/metarget/blob/master/README-zh.md 注意:推荐在Ubuntu 18.04(推荐)安装。 1.1.1. 安装metarget git clone https://github.com/Metarget/metarget.git cd metarget/ sudo apt install pyt…

[BUUCTF]-PWN:hitcon2014_stkof解析

又是一道堆题&#xff0c;先看保护 关键信息&#xff0c;64位&#xff0c;没开pie。再看ida 大致就是alloc创建堆块&#xff0c;free释放堆块&#xff0c;fill填充堆块内容&#xff0c;以及一个看起来没啥用的函数&#xff0c;当然我也没利用这个函数去解题 这里有两种解法 解…

【VB测绘程序设计】案例8——IF选择结构练习排序(附源代码)

【VB测绘程序设计】案例6——IF选择结构练习排序(附源代码) 文章目录 前言一、界面显示二、程序说明三、程序代码四、数据演示总结前言 本文主要掌握Val()函数转换,inputBox函数、IF条件句的练习,输入3个数,按大到小排序并打印。 一、界面显示 二、程序说明 利用inpu…

day13 线程同步

文章目录 1.线程同步2.不安全案例3.1同步方法3.2同步块 1.线程同步 &#xff08;多个线程操作同一个资源&#xff09; 并发&#xff1a;同一个对象被多个线程同时操作 处理多线程问题时&#xff0c;多个线程访问同一个对象&#xff0c;并且某个线程还想修改这个对象&#xf…

[BJDCTF2020]The mystery of ip

hint 猜测ip和XFF有关 加一个XFF 下面这一步是看了wp出来的&#xff1a;存在ssti 这里尝试用jinja的注入方法&#xff0c;页面回显了是php的smarty框架 查了一下smarty的注入方法&#xff0c;发现可以直接执行php命令 在根目录找到flag

ASP.NET Core 中使用 WebSocket 协议进行实时通信

介绍 在 ASP.NET Core 中使用 WebSocket 协议创建实时通信的完整示例涉及几个步骤。在此示例中&#xff0c;我们将创建一个简单的聊天应用程序&#xff0c;用户可以在其中实时发送和接收消息。此示例假设您对 ASP.NET Core 和 C# 有基本了解。 步骤1.创建一个新的ASP.NET Core…

C++项目实战——机房预约管理系统

本专栏记录C学习过程包括C基础以及数据结构和算法&#xff0c;其中第一部分计划时间一个月 (2024.1.4-2024.1.27已完结&#xff09; &#xff0c;主要跟着黑马视频教程&#xff0c;学习路线如下&#xff0c;不定时更新&#xff0c;欢迎关注。 当前章节处于&#xff1a; -------…

RPC教程 6.负载均衡

1.负载均衡策略 假设有多个服务实例&#xff0c;而每个实例都提供相同的功能&#xff0c;为了提高整个系统的吞吐量&#xff0c;每个实例部署在不同的机器上。客户端可以选择任意一个实例进行调用&#xff0c;获取想要的结果。那如何选择呢&#xff1f;取决于负载均衡的策略。…

Visual Studio如何修改成英文版

1、打开 Visual Studio Installer 2、点击修改 3、找到语言包&#xff0c;选择需要的语言包&#xff0c;而后点击修改 4、等待下载 5、 安装完成后启动Visual Studio 6、在工具-->选项-->环境-->区域设置-->English并确定 7、重启 Visual Studio&#xff0c;配置…

数据结构与算法教程,数据结构C语言版教程!(第六部分、数据结构树,树存储结构详解)三

第六部分、数据结构树&#xff0c;树存储结构详解 数据结构的树存储结构&#xff0c;常用于存储逻辑关系为 "一对多" 的数据。 树存储结构中&#xff0c;最常用的还是二叉树&#xff0c;本章就二叉树的存储结构、二叉树的前序、中序、后序以及层次遍历、线索二叉树、…

Python 命令行工具开发入门

在实际应用中,我们常常需要编写一些命令行工具,以便在终端或脚本中执行特定的任务。本文将介绍如何使用 Python 编写一个简单的命令行工具,并展示一些常见的实用技巧。 1. 概述 我们的命令行工具将具备以下功能: 输出文件内容到标准输出显示 Python 版本号显示帮助信息2.…

QT实现USB摄像头接入显示

一、UVC协议简介 UVC全称是USB Video Class&#xff08;USB视频类&#xff09;&#xff0c;是一种标准化的USB视频设备通信协议&#xff0c;它定义了摄像头与主机之间的数据传输协议和格式。 UVC协议的出现&#xff0c;解决了摄像头厂商之间互不兼容&#xff0c;以及摄像头应…

(二十八)ATP应用测试平台——使用electron集成vue3桌面应用程序

前言 Electron 是一个开源的框架&#xff0c;它允许使用 Web 技术&#xff08;HTML、CSS 和 JavaScript&#xff09;构建跨平台的桌面应用程序。通过 Electron&#xff0c;开发者可以使用前端技术栈来创建具有原生应用程序体验的桌面应用。 Electron可以在 Windows、Mac 和 L…

Nacos源码解析:String.intern()方法的巧妙应用

引言&#xff1a; 在阅读Nacos源码时&#xff0c;发现其中使用了String.intern()方法&#xff0c;这个使用并不是简单的拼接字符串&#xff0c;而是在特定场景下的优化手段。本文将深入探讨Nacos源码中String.intern()方法的应用&#xff0c;以及为什么要使用这个方法。 1. N…

【前端web入门第一天】02 HTML图片标签 超链接标签 音频标签 视频标签

文章目录: 1.HTML图片标签 1.1 图像标签-基本使用1.2 图像标签-属性1.3 路径 1.3.1 相对路径 1.3.2 绝对路径 2.超链接标签 3.音频标签 4.视频标签 1.HTML图片标签 1.1 图像标签-基本使用 作用:在网页中插入图片。 <img src"图片的URL">src用于指定图像…

《Python 简易速速上手小册》第8章:Python 网络编程与 Web 开发(基于最新版 Python3.12 编写)

注意&#xff1a;本《Python 简易速速上手小册》 核心目的在于让零基础新手「快速构建 Python 知识体系」 文章目录 <mark >注意&#xff1a;本《Python 简易速速上手小册》<mark >核心目的在于让零基础新手「快速构建 Python 知识体系」 8.1 Python 中的网络通信…

HCS 华为云Stack产品组件

HCS 华为云Stack产品组件 Cloud Provisioning Service(CPS) 负责laas的云平台层的部署和升级是laas层中真正面向硬件设备&#xff0c;并将其池化软件化的部件。 Service OM 资源池(计算/存储/网络)以及基础云服务(ECS/EVS/PC)的管理工具。 ManageOne ManageOne包括服务中心…

数据结构(1)--> 顺序表

定义&#xff1a; 顺序表存储定义&#xff1a; 把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构&#xff0c;顺序表功能的实现借助于数组&#xff0c;通过对数组进行封装&#xff0c;从而实现增删查改的功能&#xff0c;严格意义上来说&#xff08;数组无法实现…