一、数组(一维数组)

什么是数组?

数组是一组有序的、类型相同的数据的集合

数组的作用?

处理一些类型相同的数据集合

数组的构成:

元素、下标或索引、数组名

定义:

使用前必须定义

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格式:

strcpy (字符数组名1,字符数组名2) 功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志“”也一同拷贝。字符数名2,

也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。

字符串比较函数strcmp格式:

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字节的存储空间,此时空间里面没有存放东西。对于数组中的各元素,它们的存储空间是连续的,没有间断。因此,如果知道了某个元素的存放地址,就能准确获取其它元素的存放地址。

下图是对数组声明的一些解说:

C语言的数组基础,C语言基础-数组相关推荐

  1. c语言数组与指针的基础知识,C语言学习笔记之数组与指针的关系

    首先,大家先需知道一个关于基类型的概念 基类型:组成一个新类型的基础类型 这句话是什么意思呢?举个例子: int a[3] = {1,2,3}; 上面是由三个int类型的数组成一个新的类型也就是数组, ...

  2. C语言 数组指针 - C语言零基础入门教程

    目录 一.简介 1.数组 2.指针 3.指针和数组区别 二.数组指针 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 1.数组 ...

  3. C语言 指针和数组区别 - C语言零基础入门教程

    目录 一.前言 二.指针和数组区别 1.通过 sizeof 获取大小 a.计算数组大小 b.计算指针大小 2.指针和数组赋值方式不同 a.指针赋值 b.数组赋值 3.指针是指针变量,数组是指针常量 三 ...

  4. C语言 二维数组遍历 - C语言零基础入门教程

    目录 一.计算一维数组长度 二.计算二维数组长度 1.二维数组行数 2.二维数组列数 3.二维数组的元素个数 = 二维数组行数 * 二维数组列数 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C ...

  5. C语言 数组遍历 - C语言零基础入门教程

    目录 一.数组遍历原理 二.数组遍历实战 1.遍历数组查询数组中的元素 2.遍历数组修改数组中的元素 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语 ...

  6. 基础C语言知识串串香10☞数组字符串结构体联合体枚举

    五.数组&字符串&结构体&联合体&枚举 5.1.c语言中定义一个字符串:char a[6]={'l','i','n','u','x','\0'};'\0'的字符编码为0 ...

  7. 【Python语言基础】——Python NumPy 数组副本 vs 视图

    Python语言基础--Python NumPy 数组副本 vs 视图 文章目录 Python语言基础--Python NumPy 数组副本 vs 视图 一.Python NumPy 数组副本 vs ...

  8. java 数组 字符串 编程_Java语言基础知识之字符串数组

    Java语言基础知识之字符串数组 java语言中,数组是一种最简单的复合数据类型.数组是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和下标来唯一地确定数组中的元素.数组有 ...

  9. C语言编程基础-10函数形参数组做形参文件操作

    函数形参 被调函数的形参在被调用时临时创建并使用实参对其赋值,故直接修改形参(特殊形式的形参如指针,数组除外)本身只会影响到被调函数内部; 形式参数是在函数调用发生时临时创建出来的,在函数调用结束时又 ...

  10. C语言基础之10:数组和指针

    Tips1: 关键字:static 运算符:&.*(一元) 如何创建并初始化数组 指针(在已学过的基础上). 指针和数组的关系 编写处理数组的函数 二维数组 Tips2: 人们通常借助计算机完 ...

最新文章

  1. 爬虫之requests模块介绍
  2. SQL关闭自增长列标识:SET IDENTITY_INSERT
  3. BigData之Hive beeline:beeline的简介、使用方法之详细攻略
  4. mysql function_MySQL里event_ scheduler导致复制中断的故障分析-爱可生
  5. ROS(12):双足机器人开发调研
  6. LeetCode 18. 四数之和 思考分析(双指针解)
  7. Windows Win7建立wifi热点,手机共享WIFI上网
  8. RHEL 8 - 安装 webconsole
  9. 【Mybatis笔记】mybatis实现mysql增删改查
  10. Linux群控链接USB手机个数,群控系统能做到同时控制上百台手机吗?教你如何群控手机...
  11. python调用鼠标驱动_python+selenium 鼠标事件操作方法
  12. 软件测试工程师自我介绍范文_软件测试工程师面试英文自我介绍范文
  13. Jar包常见的反编译工具介绍与使用
  14. 《Web安全之深度学习实战》笔记:第六章 垃圾邮件识别
  15. socket传输案例
  16. GEE基础-大影像下载
  17. 2021-06-21 12点 程序外生活 - 中国A50指数 机器预测学习跟踪记录 - 周六反弹失败,等待跌完,继续等待4小时第一个底分型出现。周月线持续跌势。
  18. 11、Vue的生命周期
  19. 双指数边缘平滑滤波器用于磨皮算法的尝试。
  20. 体积光 GodRay

热门文章

  1. Tensorflow实现LSTM详解
  2. 如何看待事理图谱版magi--学迹
  3. CentOS7完成mysql的安装和远程访问
  4. Mybatis逆向工程的pojo实现序列化接口代码
  5. Vue computed参数与各生命周期关系(主要是异步的时候)
  6. vmware虚拟机克隆CentOS7 出现的网络问题解决办法
  7. jQuery 插件格式 规范
  8. Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
  9. sql server 模糊查询
  10. spring学习笔记02-spring-bean创建的细节问题