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

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.kler.cn/a/420240.html

相关文章:

  • JavaScript(JS)的对象
  • 攻防世界-fileclude-文件包含
  • 【案例教程】python生物信息多组学大数据深度挖掘与论文整理技巧实践技术应用
  • Qt 2D绘图之三:绘制文字、路径、图像、复合模式
  • L1-049 天梯赛座位分配
  • ultralytics-YOLOv11的目标检测解析
  • VSCode中“Run Code”运行程序时,终端出现中文乱码解决方法
  • Burp Suite 全面解析:开启你的 Web 安全测试之旅
  • DNS查询工具
  • MyBatis框架 与 传统JDBC连接数据库的对比
  • selenium动态判断滚轮方向样例
  • 【深度学习|特征增强模块】AttentionEnhancementModule模块和普通 QKV Attention模块的在深度学习网络中的作用-2
  • 自动化是语法,智能化是语义与语用
  • 使用Python和OpenAI Whisper为视频生成字幕
  • Vue文字转语音实现
  • 二阶信息在机器学习中的优化;GPTQ算法利用近似二阶信息;为什么要求近似二阶(运算量大,ReLu0点不可微)
  • 【智商检测——DP】
  • 一些基于宏基因组的巨型病毒研究
  • Python parsel库学习总结
  • 使用 OpenCV 进行车辆跟踪
  • 深入理解CSS语法:掌握Web开发的基石
  • docker x86环境构建arm镜像出现failed to fetch oauth token问题
  • 爬虫专栏第二篇:Requests 库实战:从基础 GET 到 POST 登录全攻略
  • 【maven-6】Maven 生命周期相关命令演示
  • XELA - uSkin 三轴触觉传感器:为机器人赋予敏锐触感
  • 永磁同步电机负载估计算法--滑模扰动观测器