当前位置: 首页 > news >正文

c语言——数组名该如何理解呢?

一般情况下,数组名表示首元素地址,以下2种除外:

①、sizeof(数组名)    表示整个数组   ※只有数组名的情况

        sizeof(数组名+i) 就不能表示整个数组

②、&数组名             表示整个数组,取的是整个数组的地址

int main()
{int arr[] = { 1,2,3,4,5 };int n = sizeof(arr);//整个数组int m = sizeof(arr + 1);//首元素地址+1,下一个元素地址,仅一个元素printf("%d\n", n);printf("%d\n\n", m);printf("%p\n", arr);//首元素地址printf("%p\n", arr + 1);//首元素往后一位的地址printf("%p\n", &arr[0]);//首元素地址printf("%p\n", &arr[0]+1);//首元素往后一位地址printf("%p\n", &arr);//全部元素的地址,只是只打印了首元素的printf("%p\n", &arr+1);//跳过整个数组后的第一个元素的地址return 0;
}

结果是:

20
4

00AFFE58
00AFFE5C
00AFFE58
00AFFE5C
00AFFE58
00AFFE6C

sizeof是计算()占了多少字节(byte)

可以看出,&arr 取的是整个数组的地址,怎么存放这么多地址呢?

数组指针 呀~

int (*p)[5]=&arr;

p和*先结合,表示p是指针,然后再结合[5]和int 表示是int[5]类型的

指针配合数组

打印结果是多少呢?

解释如下 👇

{int a[] = { 1,2,3,4 };printf("%d\n", sizeof(a));//16,整个数组的大小printf("%d\n", sizeof(a+0));//4或8 首元素地址printf("%d\n", sizeof(*a));//4 a是首元素地址,解引用找到首元素printf("%d\n", sizeof(a+1));//4或8 第二个元素的地址printf("%d\n", sizeof(a[1]));//4 第二个元素printf("%d\n", sizeof(&a));//【4或8】 &a是整个数组的地址,也是个地址//可以理解为,数组指针是4或8,它俩大小一样printf("%d\n", sizeof(*&a));//16 整个数组  &a是整个数组的地址,解引用后,是整个数组//printf("%d\n", sizeof(&a+1));//【4或8】 也是个地址,跳过整个数组printf("%d\n", sizeof(&a[0]));//4或8 首元素地址printf("%d\n", sizeof(&a[0]+1));//4或8 第二个元素地址return 0;
}

🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗

http://www.lryc.cn/news/496137.html

相关文章:

  • Linux学习笔记13 系统进程管理
  • Spring Boot 项目集成camunda流程引擎
  • 2024.12.2工作复盘
  • Hot100 - 二叉树的中序遍历
  • docker build ubuntu ssh
  • 三维路径规划|基于黑翅鸢BKA优化算法的三维路径规划Matlab程序
  • day01(Linux底层)基础知识
  • flink学习(13)—— 重试机制和维表join
  • 第三方Cookie的消亡与Google服务器端标记的崛起
  • 微信小程序——文档下载功能分享(含代码)
  • Burp Suite 全面解析:开启你的 Web 安全测试之旅
  • Oracle DataGuard 主备正常切换 (Switchover)
  • 为什么编程语言会设计不可变的对象?字符串不可变?NSString *s = @“hello“变量s是不可变的吗?Rust内部可变性的意义?
  • 安装 RabbitMQ 服务
  • 爬虫—Scrapy 整合 ChromeDriver 实现动态网页拉取
  • Linux 进程管理详解
  • MySQL更新JSON字段key:value形式
  • vue.js学习(day 18)
  • WINDOWS 单链表SLIST_ENTRY使用
  • 【Linux 篇】Docker 容器星河与镜像灯塔:Linux 系统下解锁应用部署奇幻征程
  • 不同云计算网络安全等级
  • 手机实时提取SIM卡打电话的信令声音-蓝牙电话如何适配eSIM卡的手机
  • 视频流媒体服务解决方案之Liveweb视频汇聚平台
  • 【在Linux世界中追寻伟大的One Piece】多线程(三)
  • mvc命令
  • 17 go语言(golang) - 错误处理
  • PG 库停库超时异常案例
  • redis下载、基础数据类型、操作讲解说明,持久化、springboot整合等
  • [代码随想录06]哈希表的使用,有效字母异位词,两数组交集,快乐数,两数之和
  • 【CSS】一篇掌握CSS