news 2026/6/6 20:48:03

邪修C语言之指针与数组

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
邪修C语言之指针与数组

C语言之指针与数组

    • 数组与内存
    • 数组指针
    • 数组指针与普通指针对比
      • 能否被=号赋值
      • 数组指针之间与指针的等效关系
    • 如何邪修理解记忆
    • 指针,数组指针与sizeof
      • sizeof
      • sizeof计算数组指针和数组
      • sizeof与数组指针的注意事项

数组与内存

数组是一组相同类型的元素的集合,这些元素在内存中是连续的,可以通过数组名和下标的方式进行访问。
#include<stdio.h>intmain(void){inta[5]={1,2,3,4,5};for(inti=0;i<5;i++){printf("%p ",&a[i]);printf("\n ");}return0;}


使用上述的代码,可以查看数组中每个元素的起始地址,如上图所示,每一个地址都是连续的,它们都刚好间隔4个字节也就是一个int类型的大小。
在图中,a和&a[0],a+i和&a[i]是等效的,可以自己去尝试一下打印其内容查看。

数组指针

数组指针是指数组在内存中的起始地址,数组元素的地址是指数组元素在内存中的起始地址。 一维数组的数组名为一维数组的指针。

数组指针与普通指针对比

能否被=号赋值

一维数组的数组名为一个常量,不能被修改,也就是说不能作为=号的左值。

而指针是变量,可以在=号左边被进行赋值操作。
常量被存放在数据段(data段),data段为只读段是不可以对其进行写操作的。
简单来说,p++;可以a++;是不行的。
也可以这样理解,以上述的代码为例假设int*p=a,p的类型为int *,
而a的类型为int *,但是由于它是数组指针,可以将其理解为隐藏了一个const,也就是说a是一个被const修饰的int *,其值是不能被修改的。
等价于const int *p;

数组指针之间与指针的等效关系

数组指针之间与指针的等效关系,包括获取内存中的值等效和读取指针存储的地址的方式等效。 1.p[i],a[i],*(a+i),*(p+i)取值等效 2.p+i,a+i,&p[i],&a[i]获取地址等效 实验代码:
#
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 20:48:02

微软AutoGen全解:多AI智能体组队干活,零基础快速上手实战

文章目录前言一、AutoGen到底是啥&#xff1f;二、为什么选AutoGen&#xff1f;三、AutoGen的"员工名单"Agent——你的员工Conversation——员工对话Message——一句话Tool——工具箱Team——项目组GroupChat——微信群四、消息是怎么流转的&#xff1f;五、快速上手…

作者头像 李华
网站建设 2026/6/6 20:45:05

5分钟掌握VMDE:专业虚拟机检测工具的快速入门指南

5分钟掌握VMDE&#xff1a;专业虚拟机检测工具的快速入门指南 【免费下载链接】VMDE Source from VMDE paper, adapted to 2015 项目地址: https://gitcode.com/gh_mirrors/vm/VMDE 你是否曾怀疑自己的电脑是否运行在虚拟机中&#xff1f;或者作为安全研究人员&#xff…

作者头像 李华
网站建设 2026/6/6 20:40:39

RV1126——获取RGA模块的数据

一、RGA模块1.1 RGA模块的定义RGA Raster Graphic Acceleration Unit&#xff0c;瑞芯微 2D 硬件图形加速器&#xff0c;RV1126 芯片内置独立硬件图像处理单元&#xff0c;纯硬件运算、不占用 CPU&#xff0c;核心能力&#xff1a; 图像缩放、裁剪、旋转 (0/90/180/270)、YUV/…

作者头像 李华