day13 指针数组 与 数组指针

发布时间:2026/9/22 0:46:04
day13 指针数组 与 数组指针 前言指针数组、数组指针是 C 语言极易混淆的知识点结合一维、二维数组、二级指针梳理核心概念方便嵌入式开发学习查阅。一、void * 无类型指针void *p;64 位系统下所有指针占用8 字节void*可以接收任意类型变量地址无法直接解引用、不能直接进行指针偏移运算适用场景通用内存操作memcpy、通用函数传参使用时需要强制转换为对应类型指针。二、二级指针int num 10; int *p num; int **q p; // 二级指针存储一级指针变量的地址核心用途 若需要在函数内部修改函数外部指针变量本身的值必须传递指针的地址也就是二级指针。三、指针数组定义区分口诀[]优先级高于*int *a[5];本质数组数组包含 5 个元素*每个元素是 int类型指针内存大小5 × 8 40 字节64 位。典型应用多字符串管理// char* 指针数组存放多个字符串首地址 char *str_arr[] {hello, c, embed};区分 二维字符数组char buf[3][20]字符串存储在栈空间char *str_arr[]指针数组仅保存字符串常量首地址字符串存放于只读常量区。四、数组指针int (*p)[5];括号提升*优先级本质指针固定 8 字节该指针指向一个包含 5 个 int 元素的一维数组。一维数组与数组指针int arr[5] {1,2,3,4,5};绝大多数场景下数组名arr等价arr[0]类型为int *数组名两个特殊场景不再指向首元素sizeof(arr)计算整个数组占用内存arr获取整个数组的地址类型升级为数组指针int (*)[5]。plaintextarr → int * 指向数组首元素 arr → int (*)[5] 指向整个数组 *arr → 等价arr类型降级为 int *五、二维数组 和 数组指针嵌入式高频考点int a[2][3] { {1, 2, 3}, {4, 5, 6} };二维数组可以理解为存放 2 个int[3]一维数组。a[0]代表第 0 行一维数组a[1]代表第 1 行一维数组。int *p NULL; // 指向单个整型元素 int (*q)[3] NULL; // 数组指针指向长度为3的int一维数组赋值规则p a[0][0]; p a[0]; p *a; q a;地址含义a数组指针指向二维数组第一行a[0]指针指向第一行第一个元素a[1]指针指向第二行第一个元素。多维元素多种访问写法a[m][n]; *(a[m]n); *(*(am)n); *(q[m]n); *(*(qm)n); q[m][n];二维数组函数传参标准写法二维数组传参本质传递数组指针需要写明每行元素个数int fun(int (*parray)[3], int row_len);核心总结区分int *a[5]; // 指针数组数组元素是指针 int (*p)[5]; // 数组指针指针指向一维数组

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询