C语言数组大全

一、一维数组

1. 格式

存储类型        数据类型        数组名[元素个数];

2. 访问元素

数组名【下标】,下标从0开始

3. 数组名

数组首地址

4、初始化

1) 全部初始化:
int a[5]={1,2,3,4,5}

2) 部分初始化:
int a[5]={1,2};//1 2 0 0 0
未初始化的元素值为0

3) 未初始化:随机值,需要单个元素赋值
int a[5];
a[1]=2;
a[2]=3;

5、定义空数组

1) int a[5]={0,0,0,0,0};
2) int a[5]={0};
3) int a[5]={};

6、引用

1. 先定义后引用
2. 每次只能引用一个数组元素a[i],如果想引用所有元素可以循环遍历
3. 引用时防止数组越界,虽然有时编译器不会报错
4. 打印数组元素地址用%p格式

7、数组遍历

把数组下标作为循环变量,用for循环遍历


8、数组的大小

1. 数据元素个数*数据类型大小
2. sizeof(数组名)

9、计算元素个数

1. 直接观察
2. sizeof(数组名)/sizeof(数据类型)

10、清零函数

1. bzero

#include <strings.h>
       void bzero(void *s, size_t n);
功能:将内存空间设置为0
参数:s:要清空的空间首地址
    n:字节大小
返回值:无
例:int a[10]={1,2,3};
bzero(a,sizeof(a));//从地址a开始,sizeof(a)个字节全部清空

2. memset

#include <string.h>
       void *memset(void *s, int c, size_t n);
功能:将内存空间设置为0
参数:s:要清空的空间的首地址
    c:要设置的值,设置为0;
n:字节大小
返回值:要清空的空间的首地址
例:
int a[10]={1,2,3};
memset(a,0,sizeof(a));

二、二维数组

1. 格式

存储类型  数据类型  数组名[行数][列数]

int a[2][3];

2. 访问元素

数组名[行下标][列下标];(下标从0开始)
a[0][0]:第一行第一列的元素~a[1][2];行下标、列下标都不能越界
行数可以省略,列数不能省略。
int a[2][]={1,2,3,4,5,6};

3. 数组元素个数

数组元素个数  =  行数*列数

4. 二维数组大小

二维数组大小 = 数据类型大小*行数*列数

sizeof(数组名)

5. 数组名

a:第一行的首地址,a+1:第二行的首地址

6. 初始化

1) 全部初始化:
int a[2][3]={1,2,3,4,5,6};//顺序赋值
int a[2][3]={{1,2,3},{4,5,6}};//按行赋值

2) 部分初始化:未被赋值的元素值为0
int a[2][3]={1,2,3,4};//顺序赋值  1 2 3 4 0 0
int a[2][3]={{1,2},{4,5}};//按行赋值  1 2 0 4 5 0

3) 未初始化:随机值,需要单独赋值
    int a[2][3];

7、二维数组的遍历

for循环嵌套,外层行数,内层列数
int a[m][n]={};
for(i=0;i<m;i++)//行下标
{
    for(j=0;j<n;j++)//列下标
    {
        scanf()/printf()
}
}

三、字符数组

1、字符数组的输入

char s[32]={};、


1) scanf("%s",s);
输入的字符串不能含有空格,因为scanf输入字符串遇到空格或\n都会认为字符串输入结束,空格后面的内容就不再存放到数组里面

如果需要输入空格就按以下格式输入:
scanf("%[^\n]",s);//直到遇到\n才结束


2)for(i=0;i<32;i++)
{
    scanf("%c",&s[i]);
}


3)gets
 char *gets(char *s);


功能:从终端获取字符串
参数:s:目标字符数组的首地址
返回值:目标字符数组的首地址
gets(s);//gets在输入时不关心数组越界问题,使用时会报警告
 

2、输出

1. printf("%s\n",s);


2. for(i=0;i<32;i++)
        printf("%c ",s[i]);


3.puts
int puts(const char *s);
功能:向终端输出字符串
参数:s:要输出字符数组的首地址
返回值:输出字符的个数
puts(s);
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值