C语言基础-数组

一、数组(一维数组)

什么是数组?
数组是一组有序的、类型相同的数据的集合
数组的作用?
处理一些类型相同的数据集合
数组的构成:
元素、下标或索引、数组名
定义:

    使用前必须定义
    1、存储类型
    2、数据类型
    3、数组名
    4、数组大小

语法:
数据类型 数组名[数组长度] ;

	 例子:int stuIds[22];

备注

    1、数组名后接一个或多个括在方括号内的表达式,用以指定数组的维数

    2、数组长度只能是常量和常量表达式(大于0)

定义数组的特性

    所有数组元素具有相同的类型
    允许使用变量的地方都可以使用数组元素
    取值:也可以使用整型表达式引用数组的元素
    数组名[整型表达式]
    数组里面的每个元素所占字节数和数组类型一致

初始化:

什么是数组初始化:

    	数组初始化是在数组定义时给元素赋初值

	extern和static数组元素自动初始化为 0 -> extern int a[10];或 static int a[10]; ->代表所有元素值都为0

语法:数据类型 数组名[常量表达式]={值,值…};

    例如:int ary[10]={0,1,2,3,4,5,6,7,8,9};

规定:

    元素之间用逗号隔开
    可以只给部分元素赋值,剩余元素赋0值
    给全部元素赋值时,可以不说明元素的个数。例如:int ary[]={0,1,2,3,4,5,6,7,8,9};

二、二维数组

定义(声明):

数据类型 数组名[常量表达式1][常量表达式2];

    例如:int temp[4][3];

    初始化:

    inta[3][4]=
    {
    {1,  2,  3, 4},

    {5,  6,  7, 8},

    {9, 10, 11,12}
    };


    inta[3][4]={

    1,  2,  3,  4,

    5,  6,  7,  8,

    9, 10, 11, 12};

    

    inta[3][4]={ 

    1,  2,  3,  4,

    5,  6,  7,  8, 

    9,10 , 0, 0};

语法:

    数组名[行下标][列下标]

三、字符数组

字符串常量

    printf("Hello World!!!");

    其中Hello World!!!就是字符串数组

区别->字符常量

    例如:'a'
    备注:
    1、符号不同,字符常量用单引号,字符串常量用双引号
    2、长度不同,字符常量有且只有一个字节,字符串常量可多个字节
    3、字符串常量一'\0'结尾,例如:"Hello World!!!"之后隐藏了一个'\0'
    (ps:'\0'称作结束标志)   
    字符数组 == 字符串变量

注意:

  • 不能对数组做整体化赋值,只能在初始化的时候进行。
  • ==的意义是:判断两个数组的地址值是否相等
  • strcmp的意义是:判断两个字符数组的值是否相等
    例外:字符串可以通过系统函数进行整体操作

四、字符串的整体I/O操作

字符串的输入、输出、合并、修改、比较、转换、复制、搜索几类。

头文件 string.h

gets(ps:scanf)

    功能:通过标准输入所获得的字符串
    函数说明:char *gets(char *buffer);
    其中,返回值:成功时返回输出缓冲区首地址,否则返回NULL        

puts(ps:printf)

    功能:用于在标准输出设备上显示字符串
    函数说明:int puts(const char *string);       

sprintf

    功能:将其他数据类型转换成字符串类型并输出到指定字符串中. 
    函数说明:int sprintf( char *buffer, const char*format [, argument] ... );        

注意
以上几种字符串处理函数,应当再次强调:库函数并非C语言本身的组成部分,而是C编译系统为方便用户使用而提供的公共函数。不同的编译系统提供的函数数量和函数名、函数功能都不尽相同,使用时要小心,必要时查一下库函数手册。

字符串拷贝函数strcpy格式:

  1. strcpy (字符数组名1,字符数组名2) 功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志“”也一同拷贝。字符数名2,
    也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。

字符串比较函数strcmp格式:

  1. strcmp(字符数组名1,字符数组名2) 功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。

    字符串1=字符串2,返回值 =0;
    字符串1〉字符串2,返回值 〉0;
    字符串1〈字符串2,返回值〈0。

假设计算机指定数组score中的元素从地址为1000的地方开始存放。那么,存放一个元素,计算机需要给该数组多少空间呢?

由于每个元素的数据类型为int,而一般来说,int占用4个字节,所以计算机需要为每一个元素分配4个字节的存储空间。如下图所示:元素score[0]占用了编号为1000, 1001, 1002, 1003共4个字节的内存空间。score[1]占用1004 - 1007号内存空间。其余元素依此类推。
在这里插入图片描述
当声明数组 int score[10]; 时,计算机就为数组预留10×4=40字节的存储空间,正式的说法是分配40字节的存储空间,此时空间里面没有存放东西。对于数组中的各元素,它们的存储空间是连续的,没有间断。因此,如果知道了某个元素的存放地址,就能准确获取其它元素的存放地址。

下图是对数组声明的一些解说:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_34623621/article/details/97490976