C语⾔——数组(数组的声明、初始化、访问)与字符串指针1、什么是数组
若将有限个类型相同的变量的集合命名,那么这个名称为数组名。
数组是在程序设计中,为了处理⽅便, 把具有相同类型的若⼲元素按⽆序的形式组织起来的⼀种形式。 [1] 这些⽆序排列的同类数据元素的集合称为数组。
2、声明数组
数组的声明并不是声明⼀个个单独的变量,⽐如number0,bumber1……,⽽是声明⼀个数组,⽐如numbers,然后使⽤
number[0],number[1]……来单独代表⼀个个单独的变量。(数组中的元素是可以通过索引来进⾏访问的)。
(所有的数组都是以 0 作为它们第⼀个元素的索引,也被称为基索引,数组的最后⼀个索引是数组的总⼤⼩减去 1)
c语⾔声明数组,需要指明元素的类型和元素的数量,⼀维数组的所⽰如下:
type arrayName [arraySize];
arraySize 必须是⼀个⼤于零的整数常量,type 可以是任意有效的 C 数据类型。
例如:
int a[10]; 说明数组a,有10个元素。若要表⽰第10个元素,则使⽤a[9]。第⼀个则是a[0]。
float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。
char ch[20]; 说明字符数组ch,有20个元素。
3、数组的初始化(以char类型的数组为例)
3.1  初始化时候不指明数组的⼤⼩,则数组的⼤⼩则为初始化时候元素的个数。
#include <stdio.h>
int main()
{
char cBufLen[] = {'a', 'b', 'c'};
printf("sizeof(cBufLen)=%d\n", sizeof(cBufLen)); //返回的值是3,因为有三个元素
}
3.2 初始化时候,指明数组的⼤⼩,⼤括号 { } 之间的值的数⽬不能⼤于我们在数组声明时在⽅括号 [ ] 中指定的元素数⽬。
1 #include <stdio.h>
2 int main()
3 {
4  char cLessThanBuf[4] = {'a', 'b', 'c'};
5  char cEqualThanBuf[4] = {'a', 'b', 'c', 'd'};
6  char cGreatThanBuf[4] = {'a', 'b', 'c', 'd', 'e'};
7 }
/*******************以下为出错显⽰*********************/
getDataFromBuf.c: 在函数‘main’中:
getDataFromBuf.c:7:2: 警告:数组初始值设定项中有多余的元素 [默认启⽤]
char cGreatThanBuf[4] = {'a', 'b', 'c', 'd', 'e'};
/*****************************************************/
3.3 给char类型数组赋值的⽅式有:
char cBufOne[4] = {'a', 'b', 'c', 'd'};
char cBufTwo[4] = {"abcd"};
4、访问数组
数组元素可以通过数组名称加索引进⾏访问。元素的索引是放在⽅括号内,跟在数组名称的后边。例如:数组名[元素索引值]
为数组中某个元素赋值。直接把值赋给数组元素即可。
#include <stdio.h>
#include <string.h>
int main()
{
char cBufOne[4] = {'a', 'b', 'c', 'd'};
printf("cBufOne[0]=%d cBufOne[1]=%d\n", cBufOne[0],cBufOne[1]);
cBufOne[1] = 'e';  //左值为数组元素的表⽰⽅式 //此⾏代码作⽤为数组中的某个元素赋值
printf("cBufOne[0]=%d cBufOne[1]=%d\n", cBufOne[0],cBufOne[1]);
printf("%d %d\n", cBufOne[0],cBufOne[1]);
}
/***********************以下为编译结果显⽰内容*********************/
[root@localhost tool]# ./getDataFromBuf
cBufOne[0]=97 cBufOne[1]=98
cBufOne[0]=97 cBufOne[1]=101
/****************************************************************/
上⾯的语句将把数组中第 10 个元素的值赋给 salary 变量。下⾯的实例使⽤了上述的三个概念,即,声明数组、数组赋值、访问数组:5、来个⽰例。声明⼀个⼤⼩为4的char类型数组,给数组赋值,并访问数组。
/*****************************************
*Function:声明⼀个⼤⼩为4的char类型数组,给数组赋值,并访问数组
*Parameter:
*Return Value:
*Remarks:
* ******************************************/
#include <stdio.h>
int main()
{
/*声明数组*/
char cBuf[4];  /*cBuf是⼀个包含4 个char类型的数组*/
int i = 0;
int j = 0;
/*初始化数组*/
for(i = 0; i < 4; i++)
{
cBuf[i] = 'a' + i; /* 设置元素i为 i + 'a'*/
}
/*访问数组元素*/
for(j = 0; j < 4; j++)
{
printf("cBuf[%d] = %d\n", j, cBuf[j]);
}
return 0;
}
/**************************结果显⽰如下**************/
[root@localhost tool]# ./array
cBuf[0] = 97
cBuf[1] = 98
cBuf[2] = 99
cBuf[3] = 100
/***************************************************/
6、探讨数组初始化时候,⼤括号 { } 之间的值的 ⼩于 数组声明时在⽅括号 [ ] 中指定的元素数⽬,其余值赋值为什么?
#include <stdio.h>
int main()
{
/*声明数组 and 初始化数组*/
char j = 0;
char cBuf[4] = {"ab"};
/*访问数组元素*/
for(j = 0; j < 4; j++)
{
printf("cBuf[%d] = %d\n", j, cBuf[j]);
}
return 0;
}
/*************以下为结果显⽰******************/
[root@localhost tool]# ./array
cBuf[0] = 97
cBuf[1] = 98
c语言如何创建字符串数组
cBuf[2] = 0
cBuf[3] = 0
/******************************************/
//解释说明:查看ascii码发现,没被直接复制的数组元素被赋值为'\0'      Oct  Dec  Hex  Char
────────────────────────────────
000  0    00    NUL '\0'

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。