【C语言初学必看】五分钟拿下数组

目录​​​​

1.一维数组:                                                                                      

a.一维数组的创建

 b.一维数组的初始化:

c.一维数组的使用:

d.一维数组在内存中的存储:

2.二维数组                                                                                     

a.二维数组的创建:

b.二维数组的初始化:

c.二维数组的使用

d.二维数组在内存中的存储:

3.数组越界                                                                                     

4.数组作为函数参数                                                                      

5.数组名:                                                                                     

6.结束语

前言:

在校大一学生,想用最简单的话来解释晦涩难懂的知识,让学习编程不再枯燥,这是我开始写博客的第三天,很多东西也是需要我学习的,请诸路大神予以指正,蟹蟹

1.一维数组:                                                                                        

数组的定义: 数组是一组相同类型元素的集合

a.一维数组的创建:

 数组的创建格式为:    数组的类型     数组名[ 常量表达式 ] ;

        

关于数组创建易错点:


 b.一维数组的初始化:

类似于给整型变量初始化的过程:

int a=2;        int b=5;        int c=66;

关于数组初始化易错点:

字符串的结束标志是 \0

特别注意:数组长度和字符串长度不是一个东西

#include <stdio.h>
#include <string.h>

int main()
{
	int arr1[3] = { 1,2,3 };
	//数组有1、2、3这三个元素

	int arr2[4] = { 1,2,3 };
	//数组有1、2、3、0这四个元素

	int arr3[4] = { 0 };
	//数组有0、0、0、0这四个元素

	char ch4[5] = "dat";
	//数组有d、a、t、\0、0这五个元素

	char ch5[] = "dat";
	//数组有d、a、t、\0这四个元素

	char arr6[] = "abc";
	//数组有a、b、c、\0四个元素,该数组长度为3,字符串长度为3

	char arr7[] = {'a','b','c'};
	//数组有a、b、c三个元素,该数组长度为3,字符串长度为随机值

	printf("%d\n", strlen(arr6));//3
	printf("%d\n", strlen(arr7));//随机值

	printf("%s\n", arr6);//得abc
	printf("%s\n", arr7);//abc乱七八糟


	return 0;
}

 

c.一维数组的使用:

访问数组中的某个元素用到[ ]下标引用操作符,

数组是使用下标来访问的,下标是从0开始

计算数组的大小如下代码:

#include <stdio.h>
int main()
{
    int arr[10] = {0};
    int sz = sizeof(arr) / sizeof(arr[0]);
    printf("则数组的大小为%d\n",sz);
    return 0;
}

d.一维数组在内存中的存储:

一维数组在内存中连续存放

数组的存放地址由低到高变化,看代码:


2.二维数组                                                                                       

一维数组长这样:int arr [ 10 ] = { 0 } ;

二维数组长这样:int arr [ 3 ] [ 4 ]  = { {1,2} , {3,4} } ;


a.二维数组的创建:

int arr1  [ 3 ] [ 4 ] ;          三行四列

char arr2 [ 4 ] [ 4 ] ;        四行四列

float arr3 [ 3 ] [ 6 ] ;        三行六列

特别注意:二维数组中,行可以省略,如:int arr [  ] [ 4 ] ;


b.二维数组的初始化:

int arr1  [ 3 ] [ 4 ] = {1,2,3,4,5};    

第一行:        1        2        3        4

第二行:        5        0        0        0

第三行:        0        0        0        0

char arr2 [ 4 ] [ 4 ] ={ {1,2} , {3,4} } ;      

第一行:        1        2        0        0

第二行:        3        4        0        0

第三行:        0        0        0        0

第四行:        0        0        0        0

float arr3 [ 3 ] [ 6 ] = { {1,2} , {3,4} , {5,6,0,2} } ;     

第一行:        1        2        0        0        0        0

第二行:        3        4        0        0        0        0

第三行:        5        6        0        2        0        0

特别注意:未完全初始化的部分都是0


c.二维数组的使用:

和一维数组相同,二维数组的使用也是通过下标的方式实现,

行和列的顺序,以及下标的的顺序不能错哦



d.二维数组在内存中的存储:

通过下图,我们发现:

二维数组在内存中也是连续存储的

数组的存放地址也是由低到高变化


3.数组越界 :                                                                                 

数组的下标是有限制的

规定:数组下标从0开始,最后一个元素下标为n-1 

看以下代码:

若i=3;则有0 1 2 3 四个下标就有四个元素,

若j=4;则有0 1 2 3  4 五个下标就有五个元素


4.数组作为函数参数  :                                                                  

 

这里用个冒泡函数:将元素排序,来举例

这个代码通过调试,才能得出效果

#include <stdio.h>

void bubble_sort(int arr[], int sz)
{
    int i = 0;
    for (i = 0; i < sz - 1; i++)
    {
        int j = 0;
        for (j = 0; j < sz - i - 1; j++)
        {
            if (arr[j] > arr[i])
            {
                int tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }

        }
    }

}
int main()
{
    int arr[] = { 1,3,6,8,2,9 };
    int sz = sizeof(arr) / sizeof(arr[0]);
    bubble_sort(arr, sz);

    return 0;
}

5.数组名:                                                                                      

6

数组名就是首元素的地址(俩个例外):

1.sizeof(数组名)计算的是数组的大小

2.&数组名,取出的是数组的地址


6.做好一件事,最重要的就是 重复 和 坚持                                    

   必行之事,何必问天,一定要加油鸭                                          

如果对您有帮助的话,不要忘记点赞哦,蟹蟹

 

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

珠江上上上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值