【c语言】一维数组***特性、存储原理

news/2025/2/14 5:56:39/

创作不易,本篇文章如果帮助到了你,还请点赞支持一下♡>𖥦<)!! 

主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

目录

一、数组的特性

二、一维数组的存储原理 

三、一维数组的声明

1)完全初始化

2)不完全初始化,其他成员默认为0

3)初始化成员个数,自动决定长度

 四、循环遍历

 五、注意事项


一、数组的特性

概念:一组长度固定 、 同类型、 有顺序 变量的集合。

 编号最小:0  编号最大:长度-1

二、一维数组的存储原理 

数组名是一个不可改的地址常量,数组名代表第0个元素的地址

 当直接输出数组名,不输出其中的成员时:   数组名就是地址!!!

#include <stdio.h>
int main()
{int arr[6];printf("%p\n", arr);
}

 打印结果为一个地址值,理解为:数组第0个元素的首地址

数组名+偏移量操作成员空间

#include <stdio.h>
int main()
{int arr[4]={0,5,6,1};printf("%d ", *(arr+0));printf("%d ", *(arr+1));printf("%d ", *(arr+2));printf("%d ", *(arr+3));
}

 

 从数组的第0个元素的地址开始,依次增加偏移量产生新的地址,再用*得到其地址对应的空间。

数组名[ 下标 ] 等价于 *( 数组名+偏移量 )

[ ]就是空间的寻找运算符,运算过程为 *(参考地址+偏移) 。

int arr[]={10,20,30,40,50};
int i;
for(i=0;i<5;i++)
{printf("%d, %d\n",arr[i], *(arr+i) ); //打印结果相同!!
}

&arr为数组第0位首地址,&+1为数组外的下一个地址 

 

三、一维数组的声明

1)完全初始化

int arr1[5] = {1,0,0,8,6}; //{}代表集合 

int [ ]多个整数 [ ]里只能放常量 

2)不完全初始化,其他成员默认为0

int arr2[5] = { 1,2 };for (int i = 0; i < 5; i++){printf("%d ", arr2[i]);}

 初始全0:

	int arr0[5] = { 0 };for (int i = 0; i < 5; i++){printf("%d ", arr0[i]);}

arr2和arr0数组初始化如下: 

 

3)初始化成员个数,自动决定长度

	int arr3[] = { 2,5,2,4,6,1,9,8,1,4 };int len = sizeof(arr3) / sizeof(arr3[0]);// 数组成员个数len=总/单个printf("arr3的个数:%d\n", len);

 四、循环遍历

	for (int i = 0; i < 6; i++) //index索引;下标{printf("%d ", arr[i]);}printf("\n数组的字节数:%d\n", sizeof(arr));printf("数组的成员数:%d\n", sizeof(arr)/sizeof(arr[0]));int len = sizeof(arr) / sizeof(arr[0]);// 数组成员个数len=总/单个printf("数组的成员数:%d\n", len);

 五、注意事项

不要下标越界使用

    int arr[5]={1,5,2,3,6};arr[-1] = 6;arr[100] = 10;//内存非法访问

 

 


http://www.ppmy.cn/news/41325.html

相关文章

Mac 上如何安装Mysql

1、首先&#xff0c;登陆Mysql的 官网&#xff1a; https://www.mysql.com/downloads/ 2、进入官网后&#xff0c;页面拉到最下面&#xff0c;找到 Mysql Community&#xff08;GPL&#xff09; Downloads&#xff0c;点击进入下载 3、然后选择&#xff1a;Mysql Community S…

“微天气” - 一个基于微信小程序的智能天气预报体验

“微天气” - 一个基于微信小程序的智能天气预报体验 一、引言 微信小程序是一种不用下载就能使用的应用&#xff0c;也是一项创新&#xff0c;经过将近两年的发展&#xff0c;已经构造了新的微信小程序开发环境和开发者生态。微信小程序也是这么多年来中国IT行业里一个真正能…

Reactor线程模型

Reactor线程模型1. 概念2.角色3.模型类型单Reactor-单线程单Reactor-多线程⭐主从Reactor-多线程Code design(参考zk)1. 创建服务, 创建服务上下文工厂2. 初始化服务上下文工厂配置3. 启动服务, 从里往外(worker > selector > accept)依次进行启动线程4. Accept Thread中…

Voting_Averaging算法预测银行客户流失率

Voting_Averaging算法预测银行客户流失率 描述 为了防止银行的客户流失&#xff0c;通过数据分析&#xff0c;识别并可视化哪些因素导致了客户流失&#xff0c;并通过建立一个预测模型&#xff0c;识别客户是否会流失&#xff0c;流失的概率有多大。以便银行的客户服务部门更…

【C++】队列模拟问题

文章目录队列模拟问题12.7.1 ATM问题12.7.2 队列类12.7.3 Queue类的接口12.7.4 **Queue类的实现**12.7.5 是否需要其他函数&#xff1f;12.7.6 Customer类queue.hqueue.cpp12.7.7 ATM模拟main.cpp队列模拟问题 12.7.1 ATM问题 Heather银行打算在Food Heap超市开设一个自动柜员…

用Appium进行iOS自动化测试

iOS UI自动化测试方案&#xff08;Appium&#xff09; 1. 环境搭建 &#xff08;1&#xff09;安装Xcode和Xcode Command Line Tools &#xff08;2&#xff09;安装Homebrew &#xff08;3&#xff09;安装Node.js &#xff08;4&#xff09;安装Appium &#xff08;5&a…

2020年11月信息系统项目管理师真题(综合+案例)

请点击↑关注、收藏&#xff0c;本博客免费为你获取精彩知识分享&#xff01;有惊喜哟&#xff01;&#xff01; 1、&#xff08; &#xff09;使系统的描述及信息模型的表示与客观实体相对应&#xff0c;符合人们的思维习惯&#xff0c;有利于系统开发过程中用户与开发人员的…

【开源项目】BallCat 项目脚手架

简介 &#x1f389;&#x1f389;&#x1f389; 基于 React 和 Ant Design 版本的前端 ballcat-ui-react 已发布&#xff0c;欢迎大家尝鲜使用 BallCat 组织旨在为项目快速开发提供一系列的基础能力&#xff0c;方便使用者根据项目需求快速进行功能拓展。 在以前使用其他后台管…