标签:c语言
数组定义:相同数据类型的变量按一定顺序排列的集合;给这个集合起的名字就叫做数组名;每一个变量都有一个编号,称下标;组成数组的每个变量也称为该数组的元素。
关于“数组是否为一种数据类型”?(此问题答案于网上查询所得)
1、构造类型:
a、从类型的定义上进行解释:每一个构造体(即组成该类型的抽象值集中的每一个抽象值)都是由若干属于某一数据类型的数据按一定规则所组成。
b、从数据结构角度进行解释:构造体的数据结构中的每一个节点(数据元素)都是一个属于某种数据类型的数据。
c、综上,构造体从数据类型角度分析,它是一种数据类型(一个值集+一个操作集),并且该类型是由若干属于某一数据类型的数据构造而成。
d、误区:构造类型并不是由某些“类型”构造而成,而是由某些“类型数据”构造而成。
2、数组是一种构造体,所以从类型角度看,数组当然是一种类型(事实上也如此,数组的确是中、高级语言中的一种重要的数据类型)。
一维数组
一维数组是最简单的数组,其逻辑结构是线性表
定义:类型+数组名[数组大小(常量表达式:常量和符号常量)],描述一组相同的数据类型(在定义数组时,一定要指定数组元素的个数)
数组内存:所有成员之和,内存是连续的
初始化:数组名[]={};
数组元素的访问:数组名[下标:0-数组大小-1]
数组越界:下标超出了范围
“小玩意”:sizeof可用于求得数组的长度。
数组长度 = sizeof(数组名)/sizeof(数组元素类型)
注意:一维数组名就是首地址(首地址:数组第一个元素的地址)
内存:连续存储,按行存储,把二维数组的每一行看成一维数组
初始化:数组名[]={{},{},{}};
1.可以只对部分元素赋初值,未赋初值的元素自动取0值。
2.如对全部元素赋初值,则第一维的长度可以不给出。
数组元素的访问:数组名[下标:0-行大小-1] [下标:0-列大小-1]
数组的遍历
注意:必须指定二维的长度(即指定“列”的值),否则编译不通过
定义:用来存放字符数据的数组,每一个元素存放一个字符
由于字符型与整型是相互通用的,也可以定义一个整型数组来存放字符数据
一维数组用字符串常量来初始化
字符串常量有自己独立的内存,只是把内存的字符拷贝到数组
字符串结束标志符:‘\0’, 为了测量字符串的实际长度,占一个字节
char c[10]="ab\0cd"; //字符串里面以\0结尾
两种输入输出方式:用格式符“%c”输入输出一个字符
用格式符“%s”输入输出整个字符串,即对字符串(string)的输入输出
字符串处理函数:
puts函数:puts(字符数组) 将一个字符串(以‘\0‘结束的字符序列)输出到终端
puts函数输出的字符串可以包含转义字符
gets函数:gets(字符数组) 将一个字符串从终端输入到字符数组,并且得到一个函 数值(一般用gets函数的目的是向字符数组输入一个字符串,而不太关心其函数值)
注:puts函数和gets函数只能输入输出一个字符串
strcat函数:字符串连接函数 strcat(字符数组1,字符数组2)
将字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值----字符数组1的地址
strcpy函数:字符串复制函数 strcpy(字符数组1,字符数组2)
将字符串2复制到字符数组1中
注:不能用赋值语句将字符常量或字符数组直接给一个字符数组
strncpy函数:strncpy(字符数组1,字符数组2,常量n)
将字符数组2中最前面n个字符复制到字符数组1中,取代字符数组1中最前面n个字符
strcmp函数:字符串比较函数 strcmp(字符串1,字符串2)
对两个字符串从左到右逐个字符相比(按照ASCII码值大小比较)
注:英文字母位置靠后的大些,小写字母>大些字母
返回值为一个正数,负数,0
strlen函数:测量字符串长度的函数 strlen(字符数组)
函数的值为字符串的实际长度(不包含‘\0’)
sizeof和strlen的区别:
sizeof:求数据类型的大小
strlen:求字符串的长度(不包括“\0”)
strlwr函数:将字符串中大的写字母换成小写字母 strlwr(字符串)
strupr函数:将字符串中的小写字母换成大写字母 strupr (字符串)
1.数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
2.数组名的书写规则应符合标识符的书写规定。
3.数组名不能与其它变量名相同。
4.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
5.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static inta[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;(请注意:在C语言中是这样,但并非在所有涉及数组的地方都这样)
6.如不给可初始化的数组赋初值,则全部元素均为0值。
7.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static inta[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
本文出自 “毕业---觉醒---行走” 博客,请务必保留此出处http://tjy888.blog.51cto.com/5576345/1714411
标签:c语言
原文地址:http://tjy888.blog.51cto.com/5576345/1714411