慢烹数组——C语言基础篇

简介: 概念👏咋说呢,我个人觉得这部分还是蛮重要的,首先是兴趣其次是压力,前面迷糊咯后面路就会走窄。它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。

概念👏

咋说呢,我个人觉得这部分还是蛮重要的,首先是兴趣其次是压力,前面迷糊咯后面路就会走窄。

它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。


创建方式👏

如何创建一个数组呢?如下:

type_t   arr_name   [const_n];

分为三个部分,type_t是数组的元素类型;arr_name是数组名;const_n是一个常量表达式,用于指定数组的大小。注意这里提及的是常量表达式,那么小朋友你是否有很多疑惑,我可不可以这样写

int a = 3;
int re[a];

其实是可以的,但我用的是vs2019编译器,这种情况下会报错“表达式必须是常量”,其实在C99标准之前,是不支持使用变量的,只能是常量,C99中增加了变长数组的概念,允许数组大小是变量,而且要求编译器支持C99标准。特别是vs2019对C99的支持不是很好,语法限制死了,像Linux Centos7等是没有问题的。


初始化👏

创建的同时给一些值就叫初始化。

比如我给几个就创几个: int re[5]={1,2,3,4,5},这就是完全初始化。


那如果我比较懒,创建了10个数,只放了5个进去可以吗?是可以的,这种叫做不完全初始化,效果是剩余的元素默认初始化为 “0”。


我给定了元素但没有创建个数可以吗:int re[]={1,2,3,4,5};这样也是没有任何问题的,它会根据初始化的内容来确定他有几个元素,我们打开调试的监视窗口一目了然:

image.png

**PS.**对于如下代码我们需要区分一下:

char re[]={'a',98,'c'}

这个数组看起来是不是感觉有问题?不是说数组是同种类型的元素吗?答案是没有问题的,注意不要忘了ASCII码哦,这里的“98”就等价于“B”。

char re[]="abc";
//re有3个元素,数组大小3个字节
char re2[3]={'a','b','c'};
//re2有4个元素,数组大小4个字节(\0)

使用👏

数组的使用在之前介绍操作符的文章里我就介绍了 : [ ] ,下标引用(访问)操作符,他是用来访问数组元素的,在数组中有一条铁律,数组中的元素下标是从0开始的。


下标访问只能访问一个元素,我可不可以把他所有内容打印出来呢?比如我有一个5个元素的数组,那我只要产生0~4的下标去访问元素就可以了。

int main()
{
int re[5] = {1,2,3,4,5};
int i = 0;
int a = sizeof(re)/sizeof(re[0]);//计算元素个数
for(i=0;i<5;i++)
{
 printf("%d\n",re[i]);//下标不是指定元素大小的,可以是变量
}
return0;
}

一维数组的存储👏

一维数组在内存中如何存储的呢?我在研究是就把它具象化,看看他的地址:

int main()
{
int arr[5] = { 1,2,3,4,5 };
int i = 0;
for (i = 0; i <= 4; i++)
{
  printf("&arr[%d]-%p\n", i, &arr[i]);
}
return 0;
}      

结果如下:

image.png

在16进制中 'C’的大小为12,所以不难发现他们的地址都是每两个元素之间相差 4,因为整型大小为 4个字节,一个字节给一个地址,所以得出结论:


1.一维数组在内存中是连续存放的;

2.数组随下标的增长,地址是由低到高变化的;

这个用处还是蛮大的,当我知道数组首元素的时候,就可以全部搞定了

int re[5] = {1,2,3,4,5};
int *p = &re[0];
int  i = 0;
for(i = 0;i<5;i++)
printf("%d ",*(p+i));//逐个全部打印数组内容
return 0;


相关文章
|
6天前
|
存储 C语言 C++
【C语言数组】
【C语言数组】
|
6天前
|
算法 C语言
C语言------数组
这篇文章是关于C语言数组的实训,包括一维数组、二维数组和字符数组的定义、赋值、输入、输出方法,并通过实例代码演示了数组的使用和一些基本算法,如冒泡排序。
C语言------数组
|
18天前
|
存储 编译器 程序员
七:《初学C语言》— 数组
【8月更文挑战第2天】本篇文章详细讲解了一维数组和二维数组的创建、使用和初始化及如何使用sizeof()计算数组中的元素个数。并附带了多个教学源码及代码练习
34 1
七:《初学C语言》— 数组
|
7天前
|
存储 编译器 C语言
C语言——数组
C语言——数组
|
12天前
|
存储 C语言
C语言(数组)
C语言(数组)
24 6
|
1天前
|
存储 编译器 程序员
【C语言篇】从零带你全面了解数组(超详细)
有时候,数组在创建的时候,我们需要给定⼀些初始值,这种就称为初始化。
|
1月前
|
安全 C语言
C语言8 数组与字符串
C语言8 数组与字符串
14 0
|
1月前
|
存储 编译器 定位技术
结构体数组在C语言中的应用与优化策略
结构体数组在C语言中的应用与优化策略
|
1月前
|
存储 编译器 数据库
结构体数组在C语言中的应用与优化技巧
结构体数组在C语言中的应用与优化技巧
|
2月前
|
存储 C语言
C语言中的多级指针、指针数组与数组指针
C语言中的多级指针、指针数组与数组指针
22 0