C语言学习记录——数组

本文详细介绍了数组在编程中的重要性,包括一维数组的定义、初始化、读写操作以及二维数组的结构。同时阐述了数组使用时的注意事项,如整体赋值规则和数组名表示首元素地址的概念。
摘要由CSDN通过智能技术生成

为什么要引入数组?

        变量只能存储一个单独的数据,如果涉及到储存很多个同类数据,比如一个班级的学生的数学考试成绩,用变量就要定义一个班的人数个,这样显然是很麻烦的。

        数组是用于储存多个同类型的数据的,相当于把多个同类变量划分在一起,统一起名字,并且使得这些变量的物理地址连续排列,便于代码的维护。

1、一维数组

 一维数组的定义:

        格式:数据类型 数组名[同类型数据的个数];

        例如:float score[20]; 数据类型:float        个数:20

                   int age[5];数据类型:int        个数:5

                   char ch[10];数据类型:char        个数:10

                   int *a[5];数据类型:int *        个数:5

        以数组age[5]为例,数组内一共有5个int型数据,分别是age[0]、age[1]、age[2]、age[3]、age[4],数组的下标从0开始,到4结束,一共5个。

一维数组的初始化:

        有如下几种方式:

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

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

一维数组的读与写:

        数组在读写时,只能通过下标一个个进行赋值,不能一次对整个数组赋值。

        错误例子:b[5]={1,2,3,4,5};        这样子赋值是不可以的

对数组score进行读写操作:

#include<stdio.h>

int main()
{
	int i;
	float score[5];
	for(i=0;i<5;i++)
	{
		scanf("%f",&score[i]);
	}
	
	for(i=0;i<5;i++)
	{
		printf("%.2f ",score[i]);
	}

	return 0;
}

字符数组与字符串:

        char name[10] = {'a','b','c','d','e','f','g','h','i','j'};        // 字符数组
        char name1[5] = {'a','b'};  // {'a','b','\0','\0','\0'}        // 字符数组或者字符串

        字符串要用字符数组来存,字符数组的末尾至少要有一个‘\0’空字符作为结尾。中文字符占用两个字节,在分配数组空间时候需要留意。

        字符串在存入数组时,可以通过以下方式输入输出:

#include<stdio.h>

int main()
{
	char a[15]="abcdefg";	    //直接初始化 
	char b[15]; 
	scanf("%s",b);			    //键盘一次全部输入 
	printf("a:%s\nb:%s",a,b);	//使用%s可以一次性输入输出字符串 
	return 0;
}

2、二维数组

        结构类似套娃,相当于定义一个二维数组里面存入一些同类型的一维数组

        定义格式:数据类型 数组名[行数][列数];        行数列数用于方便理解,实际在地址空间中,这些数组的地址是线性排列的。

        例如:创建一个2行3列的数组,输入数据,并输出

#include<stdio.h>

int main()
{
	int a[2][3];
	int i,j;
	for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	
	for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		{
			printf("%d ",a[i][j]);
		}
	}
	
	return 0;
}

3、数组使用时候的注意事项

数组只能在初始化的时候整体赋值:

        int b[5] = {1,2,3,4,5};        这样写,可以

        

        int b[5];

        b[5] = {1,2,3,4,5};            这样写不行

        int c[5];
        c = {1,2,3,4,5};               这样子也不行

数组名是数组首元素的地址:

        定义数组b,编译器会为数组b分配地址和空间,此时虽然数组内部没有数据,但是有分配的地址,可以通过%p来读取地址并打印

#include<stdio.h>

int main()
{
	int b[5];
	printf("%p %p %p %p %p\n",&b[0],&b[1],&b[2],&b[3],&b[4]);
	printf("%p %p\n",b,&b[0]);
	
	return 0;
}

可以看到b和&b[0]输出的是同样的地址,所以数组名就是数组中第一个元素的地址 

  • 25
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值