【漫谈C语言和嵌入式010】探索数组指针和指针数组

news2025/10/30 3:38:31

        在C语言中,指针是一个强大且灵活的工具,它能以多种方式操纵和访问内存。理解指针在数组中的应用对编写高效和可维护的代码至关重要。今天我们将探讨两个容易混淆的概念:数组指针指针数组

1. 数组指针(Pointer to an Array)

        数组指针是指向整个数组的指针。假设有一个数组int arr[5],那么int (*p)[5]就是一个指向该数组的指针。这个指针保存的是数组的起始地址,同时知道数组的大小。

示例代码:
#include <stdio.h>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    int (*p)[5] = &arr; // p 是指向整个数组的指针

    // 使用数组指针访问数组元素
    printf("Array elements using array pointer:\n");
    for(int i = 0; i < 5; i++) {
        printf("%d ", (*p)[i]);
    }
    printf("\n");

    return 0;
}

结果:

Array elements using array pointer:
1 2 3 4 5 

解析

  • int (*p)[5]定义了一个指向包含5个整数的数组的指针。
  • p保存的是整个数组的地址,而(*p)[i]则访问数组中的元素。
2. 指针数组(Array of Pointers)

指针数组是一个由指针组成的数组。每个数组元素都是一个指针,它们可以指向不同的数据类型或内存位置。

示例代码:
#include <stdio.h>

int main() {
    int a = 1, b = 2, c = 3;
    int *arr[3]; // 定义了一个包含3个指针的数组

    arr[0] = &a;
    arr[1] = &b;
    arr[2] = &c;

    // 使用指针数组访问数据
    printf("Values using array of pointers:\n");
    for(int i = 0; i < 3; i++) {
        printf("%d ", *arr[i]);
    }
    printf("\n");

    return 0;
}

结果:

Values using array of pointers:
1 2 3

解析

  • int *arr[3]定义了一个包含三个整数指针的数组。
  • arr[0]arr[1]arr[2]分别指向abc的地址。
  • 使用*arr[i]可以访问每个指针指向的值。
总结
  • 数组指针指向一个数组,并可以通过(*p)[i]方式访问数组中的元素。
  • 指针数组则是一个存放多个指针的数组,每个指针可以指向不同的内存地址。

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

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

相关文章

机器学习(3)-- 一元线性回归

文章目录 线性回归训练模型测试模型线性回归方程测试实用性 总结 线性回归 线性回归算法是一种用于预测一个或多个自变量&#xff08;解释变量&#xff09;与因变量&#xff08;响应变量&#xff09;之间关系的统计方法。这种方法基于线性假设&#xff0c;即因变量是自变量的线…

【学习笔记】Day 16-17

一、进度概述 1、ddnet_main 相关代码学习&#xff08;预计 3-4 天&#xff09; 二、详情 1、顶层结构 关于代码顶层结构的一些思考和总结&#xff0c;其中下图为师兄代码的文件结构 总结&#xff1a; 对于一个优秀的代码&#xff0c;其文件结构一定也是清晰的&#…

随笔五、开发板连接WIFI并通过SSH连接泰山派

摘要&#xff1a;通过wifi连接内网&#xff0c;电脑通过SSH连接泰山派 1. 泰山派接入WIFI 泰山派开发板SDK已经集成wifi_start.sh脚本&#xff0c;在脚本后面直接输入wifi名字和密码就能连接wifi rootRK356X:/# wifi_start.sh wifi名字 wifi密码 查看ip地址&#xff0c;wlan0就…

洛谷 P6359 [CEOI2018] Cloud computing

题目本质&#xff1a;贪心01背包&#xff08;dp&#xff09; 题目思路&#xff1a;dp[i][j] 表示考虑前 i 台计算机&#xff0c;能够获得 j 个核心时&#xff0c;所能获得的最大价值。将其可以优化为dp[i] 表示能够获得 i 个核心时&#xff0c;所能获得的最大价值。 状态转移…

jira敏捷开发管理工具视频教程Confluence工作流协同开发(2024)

正文&#xff1a; 随着Jira敏捷开发方法论的普及&#xff0c;Jira已经成为全球软件开发团队管理项目、任务和问题的首选工具。为了帮助团队更好地掌握Jira的核心功能&#xff0c;精心准备了一套全面开发技术及案例视频教程——《Jira敏捷开发管理工具视频教程Confluenc…

学习大数据DAY38 hive 安装与配置

目录 hadoop 大数据平台-hive 组件部署介绍 hadoop 大数据平台-Hive 部署步骤 教学视频 上机作业 hadoop 大数据平台-hive 组件部署介绍 metastore:保存关于表、列、分区、数据格式、存储位置等各种元数据信 Driver:负责与 Hive 服务器建立网络连接&#xff0c;使客户端能…

Unity的动画系统

目录 Unity动画系统的最新更新和改进有哪些&#xff1f; 如何在Unity中高效地使用Animator组件进行复杂动画制作&#xff1f; Unity动画系统中的动画混合和分层功能是如何工作的&#xff1f; 动画混合&#xff08; blend tree&#xff09; 动画分层 在Unity中创建和管理动…

一键运行RocketMQ5.3和Dashboard

一键运行RocketMQ5.3和Dashboard 目录 一键运行RocketMQ5.3和Dashboard通过Docker Compose 来一键启动运行的容器包括docker-compose.yml文件运行命令启动本地效果查看 参考信息 通过Docker Compose 来一键启动 运行的容器包括 NameServerBrokerProxyDashBoard docker-compo…

RabbitMQ消息队列总结(❤❤❤❤❤)

RabbitMQ那些事 参考一. `RabbitMQ`介绍1.1 Java工程师1.1.1 RabbitMQ学习目标1.1.2 消息队列介绍1.1.3 RabbitMQ介绍各自属性介绍(❤❤❤)二. `RabbitMQ`安装1. 基于Linux1.1 安装1.2 常用命令1.3 后台管理开启与面板介绍三. 客户端`SDK`操作(❤❤了解)1. 客户端依赖2. 生产者…

微信消息防撤回插件

该软件可以恢复别人撤回的消息。 版本特色&#xff1a; 1、看到对方撤回的消息 2、多账号可正常登录 修改原理&#xff0c;如下图&#xff1a; 使用说明&#xff1a; 1、需电脑登录 2、解压后&#xff0c;双击start_wechat.bat来运行软件 下载地址&#xff1a;Wechat防撤…

UE基础 —— 资产和内容包

目录 直接导入资产 使用资产 创建资产 资产引用 管理资产 移动和复制资产 删除资产 导出资产 迁移资产 资产元数据 在虚幻编辑器UI中使用元数据 使用资产元数据 自动重新导入 查找资产引用 替换引用工具 Class Viewer 全局资产选取器 Property Matrix 引擎项…

以node / link文件表征的道路网络-----基于南京公路公开数据做路径规划(下)------dijkstra算法的一些简单花样

在不改变dijkstra算法本身的情况下&#xff0c;完全可以从数据源的角度出发&#xff0c;解决我们的一些简单需求&#xff1a; 比较初级且粗暴的玩法&#xff0c;可以是强行赋予一些link极端的路段长度。 对于我们坚决不希望车辆行驶的道路、禁行区、或是危险区&#xff0c;就…

局域网基础技术详解

虽然在学校学了计算机网络&#xff0c;但还是有些东西要自己去了解。所以这篇博客也算是学校课程和我在网上查找资料总结的一些关于局域网基础技术知识。 一、傻瓜式交换机 一种即插即用、未管理的交换机&#xff0c;不需人工配置的低端交换机。只提供基本的网络连接功能&#…

koa+puppeteer爬虫实践

最近工作中遇到一个使用nodejs实现爬虫程序的任务。需求背景是这样的&#xff1a;公司运营的一个老项目运营那边最近提了SEO优化的需求&#xff0c;但是项目本身并没有做SSR(服务端渲染)&#xff0c;公司的要求是花费的人力成本最低&#xff0c;代价最小。在经过一番调研之后团…

Route路由 Vue2

1.路由的概念 2.路由的基本使用 1.安装 因为我们使用的是Vue2 所以使用的 router 是 3版本 当使用Vue3 的时候就使用 router4 npm i vue-router3 2.简单使用 /router/index.js //该文件专门创建整个应用的路由器import VueRouter from vue-router; //引入组件 import MyA…

谷粒商城实战笔记-179~183-商城业务-检索服务-SearchRequest和SearchResponse构建

文章目录 一&#xff0c;179-商城业务-检索服务-SearchRequest构建-检索1&#xff0c;Controller接口 二&#xff0c;180-商城业务-检索服务-SearchRequest构建-排序、分页、高亮&测试三&#xff0c;181-商城业务-检索服务-SearchRequest构建-聚合四&#xff0c;182-商城业…

x64汇编语言与逆向工程实战指南(一)

逆向程序demo网址&#xff1a;https://crackmes.one/&#xff0c;下载的压缩包密码均为.cracksme.one或cracksme.de 实例一&#xff1a;基本 网络钓鱼密码程序 破解 目录 1. DIE确定程序基本信息1.1 DIE程序与下载1.2 分析demo的架构 2. x64dbg调试获取密码2.1 功能初探2.2 调试…

C++基础——合集

1.C关键字&#xff08;C98&#xff09; C总计63个关键字&#xff0c;C语言32个关键字 2.命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存 在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的…

虚拟机可以玩Steam游戏吗?虚拟机怎么玩Steam Windows游戏 PD19虚拟机玩Steam

你有没有在苹果电脑上玩游戏的需求呢&#xff1f;很多人认为只有“双系统”才能实现Mac电脑运行Windows操作系统&#xff0c;其实不然&#xff0c;近些年来&#xff0c;虚拟机技术在不断发展&#xff0c;越来越多的苹果用户开始使用虚拟机在苹果设备上玩游戏。Steam是一个非常受…

【运维高级内容--KEEPALIVED高可用集群】

目录 1.简介 2.实现master/slave的 Keepalived 单主架构 3.vip通行 &#xff08;ping通: 4.启用日志功能 5.实现独立子配置文件 6.非抢占式模式 7.抢占延迟模式 8.单播配置 9.keepalived状态切换的通知脚本 10.双主结构&#xff1a;两个虚拟路由&#xff08;多主模式&…